emr*_*sel 3 unit-testing ionic2 angular
我有点喜欢Angular 2和Ionic 2中的单元测试。
我正在尝试测试login()下面的方法
export class LoginPage {
constructor(public navCtrl: NavController) {}
login() {
this.navCtrl.setRoot(TabsPage);
}
}
Run Code Online (Sandbox Code Playgroud)
通过以下测试
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);
});
});
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误
Error: <spyOn> : setRoot() method does not exist
Run Code Online (Sandbox Code Playgroud)
我按照本教程进行设置。
我肯定错过了什么。instance.navCtrl监视是正确的事情吗?
它最终是一个错字。我使用的是useValue而不是useClass在Provide中,因此必须通过原型访问setRoot方法。
我有
{provide: NavController, useValue: NavMock}
Run Code Online (Sandbox Code Playgroud)
代替
{provide: NavController, useClass: NavMock}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1833 次 |
| 最近记录: |