Невозможно прочитать свойство 'navigate' из неопределенной ошибки при модульном тестировании в угловых
Почему я вижу эту ошибку при выполнении моего модульного теста для функции, которая должна быть вызвана: вот мой код, сначала код.spec.ts:
it(' doit appeller le serveur quand le boutton ok est cliqué, pour envoyer l option du choix du code', () => {
let spy = spyOn(authService, 'choixReceptionCode').and.callFake(t => {
// on est pas besoin de se qui retourner du serveur l essentiel la fonction a ete appelle
return Observable.empty();
});
component.choix('mail');
// comme ça on a testé si la fonction 'connexion' a été appelle ou nn
expect(spy).toHaveBeenCalled();
});
А вот функция в component.ts:
choix(choice:string)
{
console.log("ggggggggg"+choice);
this.router.navigate(['saisirCode']);
this.choiceReceptionCode.choix=choice;
this.choiceReceptionCode.user=this.serviceAuthentification.getUserId();
this.serviceAuthentification.choixReceptionCode(this.choiceReceptionCode).subscribe(
(data)=>{
console.log("the response in choixReceptionCode");
console.log(data);
},
(error)=>{
console.log("Error in choixReceptionCode ");
console.log(error);
});
}
при выполнении теста нг я обнаружил эту ошибку,
картинка, показывающая ошибку
Я знаю, что проблема в этой строке:
this.router.navigate(['saisirCode']);
в файле component.ts, потому что, когда я комментирую это, тестовый проход, так, как я могу решить это.
большое спасибо
1 ответ
Вы можете попытаться предоставить макет для маршрутизатора.
что-то вроде:
let router = jasmine.createSpyObj("Router", ["navigate"]);
а потом:
router.navigate.and.callFake(()=>Observable.of(your stubbed data to return here));
Затем создайте экземпляр вашего компонента, введя макет маршрутизатора
let component = new MyComponent(router);
На данный момент вы можете позвонить this.router.navigate
когда внутри метода choix
так как this.router
будет ссылаться на введенную услугу, которую вы уже высмеяли и предоставили.