Рассмотрим следующий метод обслуживания
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(...)
, который был гораздо более гибким.