Как настроить HttpTestingController для асинхронных методов, которые выполняют несколько асинхронных задач - PullRequest
0 голосов
/ 20 сентября 2019

Рассмотрим следующий метод обслуживания

async save() {
    return this.http.put('/api/foo', this.foo).toPromise();
}

Обычно мы можем проверить это следующим образом:

it('should save the foo', async () => {
    const http = TestBed.get(HttpTestingController);
    const save = service.save();
    http.expectOne('/api/foo').flush({ id: 1 });
    expect(await save).toEqual({ id: 1 });
});

Если мы изменим реализацию save() для ожидания другой задачи перед вызовом httpclient:

async save() {
    await this.someOtherTask;
    return this.http.put('/api/foo, this.foo).toPromise();
}

теперь проверка не будет выполнена, поскольку, если вернется save(), вызов http-клиента не будет выполнен, когда код теста достигнет вызова expectOne.

Есть ли способ настроить HttpTestingController заранее, ничего не ожидая?Старый AngularJS $httpBackend имел when(...).respond(...), который был гораздо более гибким.

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