У меня есть метод в сервисе, который выглядит следующим образом:
public reset(id: string): Promise<boolean> {
const options = new RequestOptions();
options.body = { id };
return this.httpClient.delete(`${this.url}/items`, options)
.map((response) => (response.json())).toPromise()
.catch(_ => Promise.reject(false));
}
Я пытаюсь написать модульный тест, чтобы гарантировать, что в случае возникновения исключения Обещание отклоняется с false
.
Я использовал MockBackend
и придумал что-то вроде:
it('should fail to reset', async () => {
// Arrange
backend.connections.subscribe((connection: MockConnection) => {
const options = new ResponseOptions({
status: 404
});
connection.mockError(new Error('Error'));
});
// Act
const result = await service.reset('1234');
// Assert
expect(result).toBeUndefined();
});
Мой обработчик catch
не выполняется, и вместо этого я вижу:
at ZoneQueueRunner.attrs.onException
HeadlessChrome 68.0.3440 (Windows 10.0.0) MyService should fail to reset
at ZoneQueueRunner.attrs.onException (webpack:///./node_modules/zone.js/dist/zone-testing.js?:575:33)
at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone.js?:387:26)