gpt4 book ai didi

unit-testing - Ionic 2 NavController 单元测试

转载 作者:太空狗 更新时间:2023-10-29 18:16:41 26 4
gpt4 key购买 nike

我对 Angular 2 和 Ionic 2 中的单元测试有点陌生。

我正在尝试测试下面的 login() 方法

export class LoginPage {

constructor(public navCtrl: NavController) {}

login() {
this.navCtrl.setRoot(TabsPage);
}
}

通过以下测试

import { ComponentFixture, async } from '@angular/core/testing';
import { TestUtils } from '../../test';
import { LoginPage } from './login';
import { TabsPage } from '../tabs/tabs';

let fixture: ComponentFixture<LoginPage> = null;
let instance: any = null;

describe('Login Page', () => {

beforeEach(async(() => TestUtils.beforeEachCompiler([LoginPage]).then(compiled => {
fixture = compiled.fixture;
instance = compiled.instance;
})));

it('changes root nav to TabsPage on login()', () => {
spyOn(instance.navCtrl, 'setRoot');
instance.login();
expect(instance.navCtrl.setRoot).toHaveBeenCalledWith(TabsPage);
});
});

但是我得到以下错误

Error: <spyOn> : setRoot() method does not exist

我关注了this tutorial用于设置。

我一定是遗漏了什么。 instance.navCtrl 是值得监视的对象吗?

最佳答案

结果是打字错误。我在提供中使用 useValue 而不是 useClass,因此必须通过原型(prototype)访问 setRoot 方法。

我有

{provide: NavController, useValue: NavMock}

代替

{provide: NavController, useClass: NavMock}

关于unit-testing - Ionic 2 NavController 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41970496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com