我正在为角度应用程序运行单元测试,我想在角度应用程序中导航正常工作时进行单元测试。
if (this.customer.length == 0) {
this.router.navigate(['/nocustomer']);
}
单元测试
it(`should navigate to nocustomer`,()=>{
component.customers.length=0;
//what must be written here to check this
})
检查unit testing router in Angular
请执行下列操作
1)从@angular导入路由器。
import { Router } from '@angular/router';
2)将路由器添加到您的providers阵列并将其换成routerSpy。
TestBed.configureTestingModule({
providers: [
{ provide: Router, useValue: routerSpy }
]
})
3)最后,创建routerSpy并创建一个jasmine间谍来观察导航方法。
let routerSpy = {navigate: jasmine.createSpy('navigate')};
当测试运行时组件无法找到<router-outlet></router-outlet>
元素时,这将停止单元测试失败。
然后,您可以测试使用以下命令调用router.navigate():
expect (routerSpy.navigate).toHaveBeenCalledWith(['/nocustomer']);
因此,修改您的
it()
语句,如下所示,并添加上面的配置
it(`should navigate to nocustomer`, () => {
component.customers = [];
expect (routerSpy.navigate).toHaveBeenCalledWith(['/nocustomer']);
});