2017-02-02 9 views
0

Angular 2 v.2.0.0 - TS + карма + жасмин.Как проверить canActivate с кармой + жасмин в угловом 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); 
    }); 
} 

Как реализовать это? Когда я добавить эту конструкцию

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

Спасибо за быстрый ответ! Я вставляю код youe, и теперь у меня есть эта ошибка в canActivateInit - 'Не могу найти имя 'canActivateInit'', они не инициализированы –

+0

извините relpace canActivateInit с canActivate –

+0

ОК, а теперь ошибка в' canActivate = new CanActivate(); '- ''CanActivate' относится только к типу, но используется как значение здесь. ' –