Angular test обработчик события NavigationError - PullRequest
1 голос
/ 16 июня 2020

У меня есть метод, который обрабатывает ошибку загрузки фрагмента и показывает уведомление. Проблема в том, что я не могу имитировать NavigationError, который мне нужен для прохождения условия фильтра filter((e) => e instanceof NavigationError && e.error.name === 'ChunkLoadError').

Однако я не могу создать эту ошибку самостоятельно. Когда я создаю свой экземпляр NavigationError, я получаю сообщение об ошибке:

Error: ASSERTION ERROR: NgModule 'NavigationError (id: 1, url:' 1 ', error: 1)' не является подтипом ' NgModuleType '. [Ожидаемый => null! = Null <= Фактический] </p>

RouterTestingModule.withRoutes([
{
   path: 'loadErr',
   loadChildren: () =>Promise.resolve(new NavigationError(1, '1', 1)),
},
]),

Как мне создать экземпляр этой ошибки?

1 Ответ

1 голос
/ 17 июня 2020

Похоже, вам не нужно явно создавать NavigationError. Вы можете отклонить обещание, что автоматически вызовет NavigationError.

Теперь настройка маршрута выглядит так

RouterTestingModule.withRoutes([
  {
    path: 'loadErr',
    loadChildren: () =>
      Promise.reject({name: 'ChunkLoadError'}),
  },
]),

И сам тест

ngZone
  .run(() => router.navigateByUrl('loadErr'))
  .then(() => done.fail('Eror expected'))
  .catch(() => expect(notificationService.showError).toHaveBeenCalled());

  tick(100);
...