我想测试这个简单的守卫
既可以激活又可以负载
怎么管理呢?
我做了第一步管理注入的商店
既可以激活又可以负载
怎么管理呢?
我做了第一步管理注入的商店
@Injectable({ providedIn: 'root' }) export class AuthGuard implements CanActivate,CanLoad { constructor(private store: Store<AuthState>) {} canActivate(): Observable<boolean> { return this.store.pipe( select(selectIsAuthenticated),map(isValidToken => { if (!isValidToken) { this.store.dispatch(new logout()); return false; } return true; }),take(1) ); } canLoad(): Observable<boolean> { return this.store.pipe( select(selectIsAuthenticated),take(1) ); } }
我的第一步
export const authReducer: ActionReducerMap<{}> = { status: {} }; describe('AuthGuard',() => { let store: Store<{}>; beforeEach(() => { TestBed.configureTestingModule({ imports: [StoreModule.forRoot({}).forFeature('auth',authReducer)],providers: [Store,AuthGuard] }); store = TestBed.get(Store); }); it('should ...',inject([AuthGuard],(guard: AuthGuard) => { expect(guard).toBeTruthy(); })); });
但是测试canActivate和canLoad呢?
我要嘲笑选择和如何?