Делает ли fixture.whenStable () что-нибудь в моих угловых тестах, если не в зоне выполнения асинхронных тестов? - PullRequest
0 голосов
/ 26 ноября 2018

В последнее время я много читал об угловом тестировании, и пары всегда были async + fixture.whenStable и fakeAsync + tick, однако вы всегда можете вызвать fixtrue.whenStable, поскольку он не тесно связан.Если вы вызываете его, когда не используете асинхронную утилиту для отслеживания обещаний в тестовой зоне, она действительно что-нибудь сделает?

Например:

it('should be able to do this thing that needs some async setup', () => {
            fixture.detectChanges();
            fixture.whenStable().then()
});

Я понимаю разницу между FakeAsync/Tick иfixture.detectChanges.Мой вопрос касается того, что fixture.whenstable будет делать, когда внутри зоны выполнения FakeAsync в качестве зоны Async должна отслеживаться асинхронная работа, позволяющая fixture.whenstable подключиться к этому отслеживанию, по крайней мере, насколько я понимаю.Или действительно, если он используется и вообще не находится в зоне асинхронного выполнения.

Так что, если fixture.whenstable используется внутри функции FakeAsync, или функции, которая не устанавливает зону выполнения асинхронного выполнения, будет ли она работать должным образом?

1 Ответ

0 голосов
/ 14 декабря 2018

Нет, whenStable() ничего не делает, если вы тестируете без async из fakeAsync.whenStable() выполняет ожидание завершения всех задач в тесте NgZone.Когда вы не тестируете с асинхронностью, NgZone вообще не создается, а whenStable() просто сразу возвращается.

Если вы хотите получить более подробную информацию, проверьте код для ComponentFixture в GitHub .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...