2017-02-02 12 views
0

角2 v.2.0.0 - TS +カルマ+ジャスミン。角度2のカルマ+ジャスミンでcanActivateをテストする方法は?

public canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { 
    return this.serverThisLogin.checkAuth().map((e: boolean) => { 
     if (e) { 
      return true; 
     } 
    }). catch(() => { 
     this.router.navigate(["/login"]); 
     return Observable.of(false); 
    }); 
} 

がこれをどのように実装します。

私はこのcanActivate機能をテストするのでしょうか?私はこの建設

beforeEach(() => { 
     canAct = new CanActivate(null, null); 
    }); 

を追加すると、私はこのエラー'CanActivate' only refers to a type, but is being used as a value here.

答えて

1
import {Injectable} from "@angular/core"; 
import {CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from "@angular/router"; 
@Injectable() 

    export class CanActivateInit implements CanActivate{ 
     constructor() {} 
     canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { 
     if (/*somthing*/){ 
      return true; 
     } else { 
      return true; 
     } 
     } 
    } 



import {CanActivateInit} from "./canActivateInit"; 
import {ActivatedRouteSnapshot, RouterStateSnapshot} from "@angular/router"; 
export function main() { 
    describe('CanActivateInit canActivate',() => { 
    let canActivateInit : CanActivateInit; 
    let next: ActivatedRouteSnapshot; 
    let state: RouterStateSnapshot; 

    beforeEach(() => { 
     canActivateInit = new CanActivateInit(); 
    }); 

    it('should activate page' ,() => { 
     let result = canActivateInit.canActivate(next, state); 
     expect(result).toBeTruthy(); 
    }); 

    it('should activate page with false' ,() => { 
     let result = canActivateInit.canActivate(next, state); 
     expect(result).toBeTruthy(); 
    }); 
    }); 
} 
+0

と素早く答えてくれてありがとうを持っています!私はあなたのコードを貼り付けて、今私はcanActivateInitにこのエラーがあります - '名前 'canActivateInit''を見つけることができません、彼らは初期化されていません –

+0

申し訳ありませんrelac canActivateInit with canActivate –

+0

OK、' canActivate = new CanActivate(); ' '' CanActivate ''はタイプのみを参照していますが、ここで値と​​して使用されています。 ' –

関連する問題