Я пишу юнит-тест на нативном угловом компоненте для проверки нескольких вещей: 1) Отправить функцию для формы входа и 2) навигацию / просмотр маршрутизатора после успешного входа.
В компоненте яиспользуя RouterExtensions
из nativescript-angular/router
для навигации
В конструкторе компонента я инициализирую компонент с учетными данными пользователя по умолчанию и передаю routerextension в качестве аргумента.
constructor(private page: Page,private routerExtensions: RouterExtensions){
this.page.actionBarHidden = true;
this.user = new User();
this.user.email = "dennis@gmail.com";
this.user.password = "password";
}
при успешном ведении журнала iя перемещаю пользователя на страницу home
, и логика для этого выглядит следующим образом.
submit(){
if (!this.user.email || !this.user.password) {
this.alert("Please provide both an email address and password.");
return;
}
this.processing = true;
if(this.isLoggingIn){
this.login();
}else{
this.register();
}
}
login() {
console.log(this.user)
if(this.user){
this.processing = false;
this.routerExtensions.navigate(["/home"], { clearHistory: true });
}else{
this.processing = false;
this.alert("Unfortunately we could not find your account.");
}
}
Я использую mocha для тестирования, и мой модульный тест на данный момент выглядит следующим образом
var reflect = require("reflect-metadata");
var component = require("../app/login/login.component");
describe("Test for Login component", ()=>{
var appComponent;
beforeEach(()=>{
appComponent = new component.LoginComponent();
});
it("Should Login User", ()=> {
appComponent.submit();
assert.equal(appComponent.user.email,"dennis@gmail.com")
assert.equal(appComponent.user.password,"password")
});
it("Should navigate user to home page",()=>{
// Logic for testing that the view is home page.
})
});
При запуске теста я получаю эту ошибку
TypeError: Cannot read property 'navigate' of undefined
Я понимаю, что эта ошибка является результатом этой строки: this.routerExtensions.navigate(["/home"], { clearHistory: true });
в методе login()
, потому что при комментировании тест проходит успешно.
Что я не уверен, так это как написать модульный тест для проверки как маршрутизации страницы, так и представления о том, что пользователь находится. Как я высмеиваю проблему с навигацией. Спасибо