如何在角应用程序中单元测试router.navigate

问题描述 投票:0回答:1

我正在为角度应用程序运行单元测试,我想在角度应用程序中导航正常工作时进行单元测试。

 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
})
angular unit-testing
1个回答
1
投票

检查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']);
});
© www.soinside.com 2019 - 2024. All rights reserved.