Вы пытаетесь проверить асинхронную операцию c, используя синхронный тестовый поток. В вашем тесте expect(location.path()).toBe('/tests')
выполняется после того, как fixture.whenStable()
разрешен, но ваша функция завершает выполнение sh до того, как это произойдет, поэтому вы должны указать jasmine дождаться разрешения fixture.whenStable()
. Проще всего вернуть обещание, чтобы Жасмин знала, что ему нужно дождаться, пока он прекратит действие c.
it("should navigate to /tests", () => {
const location = TestBed.get(Location)
const buttons = de.queryAll(By.css('button'));
const nativeButton: HTMLButtonElement = buttons[1].nativeElement;
nativeButton.click();
fixture.detectChanges();
return fixture.whenStable().then(() => {
expect(location.path()).toBe('/tests')
});
});
Для более сложных сценариев ios вы можете использовать async/await
или done
. Здесь вы можете прочитать, как это реализовать.