我正在為訂閱呼叫撰寫單元測驗,但我無法涵蓋訂閱方法的錯誤處理部分。在 403 錯誤的情況下,有一個 handleError 函式可以處理 statusCode=403 和其他 statusCodes 的錯誤。任何幫助將不勝感激!
組件.ts 檔案
getData(){
this.someService.getResponse().subscribe(res=>{
this.showForm=true;
this.Form.patchValue({
flag:res && res.someflag? "true" : "false"
})
},((error: HttpErrorResponse) => {
this.handleError(error);
}));
}
component.ts 檔案中的 handleError() 函式
handleError(error){
this.showForm=false;
if(error.error && error.error.statusCode === 403){
this.itemError=false;
this.overlayError=true;
}
else{
this.itemError=true;
this.overlayError=false;
}
}
組件.spec.ts 檔案
這是我嘗試過的,但它沒有涵蓋測驗用例。
it('should handle error for 403',async()=>{
const param={statusCode:403};
const errorResponse=new Error('403 errror');
spyOn(component["someService"],"getResponse").and.returnValue(throwError(errorResponse));
component.handleStatusCodeError(param);
expect(component.showForm).toBe(false);
expect(component.itemError).toBe(false);
expect(component.overlayError).toBe(true);
})
uj5u.com熱心網友回復:
代替
const errorResponse = new Error('403 error');
您應該模擬如下回應
const errorResponse = new HttpErrorResponse({ status: 403, error: {}});
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/431919.html
