如何在angular 2中为router.url编写单元测试

时间:2017-11-16 15:04:30

标签: angular2-routing

请帮助在router.url usging angular上编写单元测试2.请查看以下代码以了解我的查询。

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
    selector: 'app-about',
    templateUrl: './app-about.component.html',
    styleUrls: ['./app-about.component.scss']
})
export class AboutComponent implements OnInit {
    constructor(private router: Router) {
        if (this.router.url.includes('home')) {
            ...some functions
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

在单元测试中,我不会尝试修改“ router.url”,但会导航至所需的URL。
为此,我使用Angular的RouterTestingModule:

TestBed.configureTestingModule({
  declarations: [MyComponentToTest, DummyComponent],
  providers: [Location],
  imports: [RouterTestingModule.withRoutes([{ path: 'search', component: DummyComponent },
    { path: 'dashboard', component: DummyComponent }])]
  }).compileComponents();

带有虚拟组件:

@Component({ template: '' })
class DummyComponent { }

它用两个模拟路由设置路由器。
然后,在测试中,我恢复了路由器:
const router = TestBed.get(Router);
然后导航到所需的网址:
    router.navigate(['/search']);
您可能需要执行fixture.detectChanges();来刷新组件,然后再执行其他任何操作。