2016-06-08 4 views
2

저는 카르마와 이온 2가 새롭습니다. 이제 로그인 파일을 테스트해야합니다. 아래에 두 가지 기능이 있으며 테스트하는 방법을 알고있는 사람이 있습니까?Karma test this.nav.push와 this.menu.enable in ionic2 사용법

export class LoginPage implements OnInit{ 

login: {username?: string, password?: string} = {}; 
submitted :boolean = false; 
    //let user =""; 
    //let pass ="";private userData: UserData, 
    constructor(private nav: NavController, 
       private menu : MenuController, 
       private loginProvider : LoginProvider) {} 

사람이 코드를 테스트하는 방법을 알고 :

onSignup() { 
    this.nav.push(SignupPage); 
    } 

하고 다음 기능 페이지를 알고 사용됩니다

onPageDidEnter() { 
    // the root left menu should be disabled on the tutorial page 
    console.log("enter login"); 
    console.log("login"+JSON.stringify(this.nav)); 
    console.log(this.nav.length()); 
    this.menu.enable(false); 
    } 

    onPageWillLeave() { 
    // enable the root left menu when leaving the tutorial page 
    console.info("out login"); 
    this.menu.enable(false); 
    } 

클래스 및 수출을 변경? 난 그냥이 함수를 호출하고이 같은 테스트 할 때 때문에 :

expect(logins.onSignup()).toHaveBeenCalled(true); 

오류

TypeError: undefined is not an object (evaluating 'this.nav.push') 
+0

이 기능이 작동하는지 궁금합니다. 또한 push 메서드를 테스트해야하지만 모의 메서드를 모르는 – DAG

답변

0

이것은 당신이 KarmaJasmine으로 테스트 할 수있는 방법의 모의이다. 테스트에 대한 자세한 내용은 각도 TestBed을 확인하십시오.

let component = fixture.component; 
spyOn(component.nav.push).and.stub(); 
component.onSignup(); 
expect(component.nav.push).toHaveBeenCalledWith(SignupPage);