angular - 如何在 Angular 8 jasmine 中测试 catchError 场景,以便覆盖 handleError 方法
问题描述
服务方式
createAddress(reqBody): Observable<DataOnPost> {
return this.http
.post<DataOnPost>(`APIUrl`, reqBody)
.pipe(catchError(this.handleError));
}
处理错误方法::
handleError(error) {
let errorMessage = '';
if (error.error instanceof ErrorEvent) {
// Get client-side error
errorMessage = error.error.message;
} else {
// Get server-side error
errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
}
return throwError(errorMessage);
}
服务规范.ts
it('should handle error', () => {
const reqBody = MOCK_BODY;
spyOn(service, 'handleError').and.callThrough();
service.createAddress(reqBody).subscribe(
data => fail('Should have failed with 404 error'),
(error: HttpErrorResponse) => {
expect(error.status).toEqual(404);
expect(error.error).toContain('404 error');
expect(service.handleError).toHaveBeenCalledTimes(1);
}
);
const request = httpMock.expectOne('api-url');
request.flush('404 error', { status: 404, statusText: 'Not Found' });
expect(request.request.method).toBe('POST');
});
上午收到错误:预期的间谍 handleError 已被调用一次。它被调用了0次。
解决方案
推荐阅读
- kotlin - 在 Kotlin 中使用列表进行 setOf 过滤
- java - 如何在没有 @Query 的情况下使用 Spring Data JDBC 运行自定义 SQL?
- javascript - 按钮 onClick 在反应显示中不起作用 FindDOMNode 在 StrictMode 中已弃用
- postgresql - PostgreSQL 中重叠间隔的最大计数
- python - flask_sqlalchemy 关系问题,
- git - Git-Flow - “独立组件” - 如何?
- rest - 如何将移动应用离线状态与远程数据库同步?
- javascript - date-fns/parse 无效日期
- css - 如何在 Bootstrap 中将导航栏切换按钮和徽标移动到左侧?
- javascript - 如何从保存在 localStorage 中的表中删除一行?