Я тестирую навигацию в веб-приложении с помощью спецификации Jasmine с RouterTestingModule
, но у меня проблемы с вложенным fixture.whenStable().then(() => {})
.
Например: я нажимаю на ссылку, затем на другую ссылку, а затем еще на одну ссылку, каждый раз, когда router-outlet меняет отображаемый компонент. Пока что это единственный способ, которым я решил протестировать (без тестов e2e), - это следовать приведенному ниже шаблону:
(component setup)
...
it('test name', async(() => {
fixture.nativeElement.querySelector('.link').click();
fixture.whenStable().then(() => {
fixture.nativeElement.querySelector('.link2').click();
fixture.whenStable().then(() => {
fixture.nativeElement.querySelector('.link3').click();
fixture.whenStable().then(() => {
expect(fixture.nativeElement.querySelector('.element')).toBeTruthy();
});
});
});
});
Но это немного безумный способ написания тестов. Я думаю попробовать fakeAsync
с tick()
и flush()
, однако это не помогает, так как компонент не появляется (рендерится) вместо router-outlet
.
Есть ли способ выполнить мой тест без вложенной структуры обещаний? Может ли fakeAsync
помочь в моем случае?