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

标签 unit-testing navbar ionic2

我是 Karma 和 ionic 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')

最佳答案

这是关于如何使用 KarmaJasmine 对其进行测试的模拟。有关测试的更多信息,您可以查看角度 TestBed .

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

关于unit-testing - 如何在ionic2中使用Karma测试this.nav.push和this.menu.enable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37700202/

相关文章:

c# - 如何对返回匿名对象的 ASP.NET Core MVC Controller 进行单元测试?

unit-testing - 动态创建测试列表

unit-testing - 测试中的整个单轨操作调用

html - 在 CSS 中的每个元素后添加一个符号

javascript - 如何在 IONIC 2 的 ion-item 中放置多个徽章?

c# - 如何在 ASP.NET Core 中测试自定义操作过滤器?

javascript - 引导导航栏按钮的当前 URL

html - 无法更改导航栏 bootstrap3 中的按钮高度

android - 将 2 个远程数据库复制到单个 PouchDB 数据库以绕过 Android 1 数据库限制

css - 设置 Ionic 警报弹出元素的默认样式