总结问题:
我想用Spectator和Jest测试我的自定义ErrorHandler。我希望通过一个简单的测试,其中将为状态为handleFailFastError
的{{1}}调用特定方法HttpErrorResponse
一次。实际结果是500
在另一种方法中被当作HttpErrorResponse
处理。
描述您尝试过的方法:
我检查了我是否在方法内,是的。已通过TypeError
个调用进行检查,并打印出错误。它是一个console.log
对象。结果,我检查它是否为{castToWriteable: [Function]}
实例的条件失败,并且我的handleError将响应作为TypeError处理。将自己定位在此example上。还检查了此堆栈溢出entry。
显示一些代码 ErrorHandler:
HttpErrorResponse
到目前为止,我使用观众和玩笑的测试:
@Injectable()
export class ErrorHandlerInterceptor implements ErrorHandler, OnDestroy {
private _destroy$ = new Subject();
constructor(
private _injector: Injector
) {
}
public ngOnDestroy(): void {
this._destroy$.next();
this._destroy$.complete();
}
public handleError(error: Error | HttpErrorResponse): void {
console.log('Did i get called?', error);
const failFast: number[] = [401, 403, 500];
if (error instanceof HttpErrorResponse) {
if (navigator.onLine) {
if (failFast.includes(error.status)) {
handleFailFastError();
}
if (error.status === 409) {
//handleConflictError();
}
if (error.status === 400) {
//handleBadRequestError();
}
//handleAnythingElse();
} else {
//Errors, when the user is offline
//handleOfflineError();
}
} else {
//Type errors
console.log('Type Error',error);
//handleTypeError();
}
}
//functions
public handleFailFastError(): void {
console.log('Handled 500');
}
}