Unit testing 如何在ionic2中使用Karma测试this.nav.push和this.menu.enable

Unit testing 如何在ionic2中使用Karma测试this.nav.push和this.menu.enable,unit-testing,navbar,ionic2,Unit Testing,Navbar,Ionic2,我是《因果报应》和《离子2》的新手。现在我需要测试登录文件。下面有两个函数,有人知道如何测试它们吗 onSignup() { this.nav.push(SignupPage); } 下面的函数用于知道页面已更改 onPageDidEnter() { // the root left menu should be disabled on the tutorial page console.log("enter login"); console.log

我是《因果报应》和《离子2》的新手。现在我需要测试登录文件。下面有两个函数,有人知道如何测试它们吗

  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);
  }
类和导出:

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) {}
有人知道如何测试这些代码吗?因为当我刚刚调用这个函数,并想按如下方式进行测试时:

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

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

这是如何用
Karma
Jasmine
测试它的模拟。有关测试的更多信息,请查看angular


我想知道你有没有用这个?我还需要测试push方法,但我不知道如何模拟它。获取错误:error::push()方法不存在,这是我的问题-
let component = fixture.component;
spyOn(component.nav.push).and.stub();
component.onSignup();
expect(component.nav.push).toHaveBeenCalledWith(SignupPage);