Я своего рода новый для модульного тестирования в угловых 2 и ионического 2.Ионные 2 NavController модульное тестирование
Я пытаюсь проверить метод 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
правильной вещью, чтобы шпионить за ней?
Вы можете отлаживать тест в Chrome и осмотрите его (как вы могли бы сделать бегущую приложение). Я не могу понять это, глядя на код. Нажмите DEBUG в карме, выполните ошибку в консоли и добавьте точку останова. Проверьте instance.navCtrl и посмотрите, почему отсутствует setRoot. Если вы издеваетесь над NavController, убедитесь, что mock имеет setRoot. – lathonez
Привет, можем ли мы установить шпиона на login()? Если да, то как? – Aditya
Да, вы можете сделать это так же, как я установил шпион на 'this.navCtrl.setRoot()' выше. В одном из ваших тестов сделайте что-то вроде этого: 'spyOn (instance, 'login')'. Если вам нужна дополнительная помощь или если это не сработает, не стесняйтесь задавать новый вопрос о SO и делиться своим кодом! – emroussel