代码之家  ›  专栏  ›  技术社区  ›  physicsboy

无法测试canActivate()-Angular2的错误路径+

  •  2
  • physicsboy  · 技术社区  · 7 年前

    有谁能帮我测试确定我的应用程序AuthGuard的canActivate函数的错误路径吗?

    看来我很难假装 RouterStateSnapshot ...

    守卫

    canActivate(
          next: ActivatedRouteSnapshot,
          state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
    
        console.log(next);
        console.log(state);
        console.log(localStorage.getItem('token'));
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   user4676340user4676340    7 年前

    满足所有条件以通过错误测试:

    it('should return false', () => {
      spyOn(guard['authService'], 'getStoredToken').and.returnValue('');
    
      expect(guard.canActivate(null, { url: 'foo' } as any)).toEqual(false);
    });
    
        2
  •  0
  •   physicsboy    7 年前

    我找到了解决办法。。。

    const next: ActivatedRouteSnapshot;
    const state: any = {url: ''};
    const queryParams = {queryParams: {returnUrl: ''}};
    
    it('should return false and not navigate', () => {
        // Set token as '' as this is what would be returned by 'getToken' function
        localStorage.setItem('token', '');
        expect(guard.canActivate(next, state)).toEqual(false);
        expect(navSpy).toHaveBeenCalledWith(['login'], queryParams);
      });
    
    推荐文章