【发布时间】:2020-07-03 23:29:57
【问题描述】:
我正在做角度服务测试。它工作正常。但是我无法实现100%的测试,因为错误功能没有测试。我已经尽力了。但无法拿出 100%。有人帮帮我吗?
这是我的服务:
export class CandidateRegistrationManagementService {
constructor(private http: HttpClient) { }
getAvailabilityType(): Observable<ModelAvailabilityType> {
return this.http.get<ModelAvailabilityType>(environment.setUpAndConfigUrl + `LookupTypeValue/LookupValueTypeDetails?LookupTypeName=AvailabilityType`)
.pipe(
map(events => {
return events;
}),
catchError(this.handleError)
);
}
handleError(error: Response) {
return throwError(error);
}
}
我的测试用例目前我已经覆盖了 75%。错误测试的问题。这是我的尝试:
it('should throw error', () => {
const httpError = {
get: jest.fn(() => of(hot('#', {}, new Error('server error'))))
};
function handleError(error:any) {
return throwError(error);
}
CRMService = new CandidateRegistrationManagementService(httpError as any);
CRMService.getAvailabilityType().subscribe(data =>data, (error:any) => {
catchError(handleError(error))
})
})
但我的尝试不起作用。我没有得到 100% 的覆盖率。请在这里寻求帮助。
【问题讨论】:
-
你试过angular.io/guide/http#testing-for-errors吗?但请注意,
catchError((err) => throwError(err))实际上是一个空操作,一开始就抓住它是没有意义的。 -
@jonrsharpe - 但我无法获得 100% 的覆盖率,直到我完成错误的测试。
-
如果您删除了多余的错误路径,您可以在不编写错误测试的情况下提高覆盖率。不过,如果您确实想测试错误案例,您是否尝试过使用 Angular 提供的用于测试 HTTP 服务的工具?
-
@jonrsharpe - 我同意你的看法。让我尝试角度推荐。但问题是我将 jest.js 与 jasmine-marbles 一起使用。希望以同样的方式修复。
标签: angular unit-testing jestjs jasmine-marbles