2017-02-02 7 views
0

Angular 2 v.2.0.0 - TS + Karma + Jasmin.Wie kann canActivate mit Karma + Jasmin in Winkel 2 getestet werden?

Ich würde testen diese canActivate Funktion:

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); 
    }); 
} 

dieses Wie umsetzen? Wenn ich diese Konstruktion hinzufügen

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

Ich habe diesen Fehler bekam 'CanActivate' only refers to a type, but is being used as a value here.

Antwort

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

Dank für die schnelle Antwort! Ich füge yee Code ein, und jetzt habe ich diesen Fehler in canActivateInit - 'Kann Namen nicht finden 'canActivateInit'', sie sind nicht initialisiert –

+0

sorry rpspace canActivateInit mit canActivate –

+0

OK, und jetzt Fehler in' canActivate = new CanActivate(); '- ''CanActivate' bezieht sich nur auf einen Typ, wird aber hier als Wert verwendet. ' –

Verwandte Themen