angular - 在 Angular HTTP 拦截器中对拦截函数进行单元测试
问题描述
我编写了一个 Angular 9 HTTP 拦截器,我想在相对隔离的情况下对拦截功能进行单元测试。从我已经在StackOverflow上看到的情况来看,人们建议发出虚假 HTTP 请求或返回基本请求,因为我使用 .pipe 方法(TypeError: next.handle(...).管道不是函数)
这是我的拦截功能,请问您建议对该功能进行单元测试吗?
intercept(request: HttpRequest < unknown >, next: HttpHandler): Observable < HttpEvent < unknown >> {
this.loadingService.show();
return next.handle(request).pipe(
catchError((error: HttpErrorResponse) => {
if (error.status !== 401) {
this.snackBar.open("There was an error when making your request! " + error.message, 'Okay, I will refresh the page', { duration: 10000 });
}
return throwError(error);
}),
finalize(
() => {
this.loadingService.hide()
}
)
);
}
解决方案
我能够通过在提供者部分添加以下内容来解决我的问题
TestBed.configureTestingModule
通过提供HTTP_INTERCEPTORS
将HttpClientTestingModule
使用我制作的拦截器:
{
provide: HTTP_INTERCEPTORS,
useClass: LoadingInterceptor,
multi: true
},
推荐阅读
- ios - 如何使用 SwiftyJSON 显示 API 图像
- javascript - 如何更改每个字符的颜色
- ios - 基于 UITableView Frame 和 ContentSize 的动态页脚高度
- c - 使用开关盒的奇数和偶数
- javascript - jquery禁用按钮,直到第一个按钮被点击
- android-studio - 如何运行 VUZIX Blade Template 应用程序?
- java - 如何使用正则表达式解析以下数据?
- python - 为什么 Python 列表理解过滤器对 if-else 有不同的语法
- c++ - 函数的 C++ 运算符重载
- rest - 通过 REST 查询 Cloud Firestore 子集合