Angular - Спорадически провал модульных тестов (маршрутизатор) - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть приложение Angular 8, которое использует маршрутизатор для переключения между некоторыми основными компонентами. Теперь я провел несколько модульных тестов, и иногда все тесты проходят, но иногда один или два не проходят - всегда по одной и той же причине.

Это вывод, который я получаю, выполняя тест ng (когда тесты ошибка):

Chrome 80.0.3987 (Windows 10.0.0): Executed 32 of 34 ERROR (0 secs / 0.819 secs)
Chrome 80.0.3987 (Windows 10.0.0) ERROR
  An error was thrown in afterAll
  Uncaught Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'overview'
  Error: Cannot match any routes. URL Segment: 'overview'
      at ApplyRedirects.noMatchError (http://localhost:9876/_karma_webpack_/node_modules/@angular/router/fesm2015/router.js:4295:1)
      at CatchSubscriber.selector (http://localhost:9876/_karma_webpack_/node_modules/@angular/router/fesm2015/router.js:4259:1)
      at CatchSubscriber.error (http://localhost:9876/_karma_webpack_/node_modules/rxjs/_esm2015/internal/operators/catchError.js:29:1)
      at MapSubscriber._error (http://localhost:9876/_karma_webpack_/node_modules/rxjs/_esm2015/internal/Subscriber.js:75:1)
      at MapSubscriber.error (http://localhost:9876/_karma_webpack_/node_modules/rxjs/_esm2015/internal/Subscriber.js:55:1)
      at MapSubscriber._error (http://localhost:9876/_karma_webpack_/node_modules/rxjs/_esm2015/internal/Subscriber.js:75:1)
      at MapSubscriber.error (http://localhost:9876/_karma_webpack_/node_modules/rxjs/_esm2015/internal/Subscriber.js:55:1)
      at MapSubscriber._error (http://localhost:9876/_karma_webpack_/node_modules/rxjs/_esm2015/internal/Subscriber.js:75:1)
      at MapSubscriber.error (http://localhost:9876/_karma_webpack_/node_modules/rxjs/_esm2015/internal/Subscriber.js:55:1)
Chrome 80.0.3987 (Windows 10.0.0): Executed 34 of 34 ERROR (1.167 secs / 0.907 secs)

Я включил RouterTestingModule в массив импорта каждого тестового файла, где соответствующий компонент использует маршрутизатор любым способом. Вот как, например:

describe('FeedbackComponent', () => {
  let component: FeedbackComponent;
  let fixture: ComponentFixture<FeedbackComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ FeedbackComponent, OverviewHeaderComponent ],
      imports: [FormsModule, RouterTestingModule, HttpClientTestingModule]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(FeedbackComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

Кто-нибудь, кто когда-либо имел такие проблемы? Или знает, почему это случайно терпит неудачу? Заранее большое спасибо:)

1 Ответ

0 голосов
/ 17 апреля 2020

Попробуйте сделать:

RouterTestingModule.withRoutes(
        [{path: 'overview', component: FeedbackComponent}]
      )

Действительно, FeedbackComponent может быть любым фиктивным компонентом, который вы создаете. Это может решить вашу проблему, но я не уверен, как она будет масштабироваться. Кажется, у вас есть большая проблема. Я вижу, что ошибка была выдана в afterAll, есть ли у вас какие-либо из afterAll хуков? В них есть какое-то смешное дело?

...