как юнит-тестирование router.navigate в угловом приложении - PullRequest
0 голосов
/ 20 апреля 2019

Я запускаю юнит-тест для углового приложения, я хочу юнит-тест, если навигация работает правильно в угловом приложении.

 if (this.customer.length == 0) {
     this.router.navigate(['/nocustomer']);
 } 

И юнит тест для этого

 it(`should navigate to nocustomer`,()=>{
   component.customers.length=0;
   //what must be written here to check this
})

1 Ответ

1 голос
/ 20 апреля 2019

Проверка модульного тестирования маршрутизатора в Angular

Выполните следующие действия

1) Импортируйте маршрутизатор из @ angular.

import { Router } from '@angular/router';

2)Добавьте маршрутизатор в массив поставщиков и поменяйте его для routerSpy.

TestBed.configureTestingModule({
  providers: [
    { provide: Router, useValue: routerSpy }
  ]
})

3) Наконец, создайте routerSpy и создайте шпион jasmine для наблюдения за методом навигации.

let routerSpy = {navigate: jasmine.createSpy('navigate')};

Это остановит ваш модульный тест, если он не сможет найти элемент <router-outlet></router-outlet> во время теста.

Затем вы можете проверить, что router.navigate () был вызван с помощью:

expect (routerSpy.navigate).toHaveBeenCalledWith(['/nocustomer']);

Следовательно, измените ваш оператор it(), как показано ниже, и добавьте вышеуказанный конфиг

it(`should navigate to nocustomer`, () => {
   component.customers = [];
   expect (routerSpy.navigate).toHaveBeenCalledWith(['/nocustomer']);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...