我正在使用jasmine编写角度2代码的测试用例。我试图在用户注销后导航回登录页面。如何测试页面位置?
答案 0 :(得分:3)
您真正需要做的就是测试使用正确的参数(即登录页面的路由)调用路由器导航方法。尝试测试实际导航可能会导致比单元测试所需的更多副作用。
要检查是否调用了Router.navigate
方法,只需使用存根并监视它。
@Component({})
class SomeComponent {
constructor(private router: Router) {}
logout() {
this.router.navigate(['/login'])
}
}
let routerStub;
beforeEach(() => {
routerStub = {
navigate: jasmine.createSpy('navigate');
}
TestBed.configureTestModule({
declaration: [ SomeComponent ],
providers: [
{ provide: Router, useValue: routerStub }
]
});
});
it('it should navigate to login after user logs out', () => {
let component = TestBed.createComponent(SomeComponent).componentInstance;
component.logout();
expect(routerStub.navigate).toHaveBeenCalledWith(['/login']);
})
答案 1 :(得分:0)
Angular团队一直致力于将测试纳入角度环境的所有原生方面。如果您使用的是原生角度路由器,那么他们已经构建了测试供您使用。看看这个BLOG。如果您没有使用角度路由器,那么我认为您自己就是这样。