【发布时间】:2016-12-08 18:59:17
【问题描述】:
虽然我已经编写 Angular 2 有一段时间了,但我只是在编写我的第一个 Jasmine 测试并且遇到了一些困难。我正在尝试测试实现CanActivate 的CanActivate 服务方法是否正常运行,并按预期返回true 或false。
我的方法是这样的:
canActivate( route: ActivatedRouteSnapshot, state: RouterStateSnapshot ): Observable<boolean> {
return this.store$
.map( ( store: StoreState ) => store.currentUser )
.first()
.map( ( user ) => {
if ( user.isAuthenticated ) {
return true;
}
// TODO: This needs refactoring. Need to provide RouterStateSnapshot in test,
// rather than ignoring it!
this.redirectUrl = state ? state.url : '';
this.injector.get( Router ).navigate( ['/login'] );
return false;
} );
}
我的测试摘录如下所示:
service = TestBed.get( AuthGuardService );
it( 'should prevent navigation', () => {
service.canActivate(null, null).subscribe((res) => expect( res ).toBeTruthy() );
} );
我如何模拟/存根/无论我调用service.canActivate 的第二个参数,而不是简单地传入null?
【问题讨论】:
标签: unit-testing angular jasmine karma-jasmine angular2-routing