gpt4 book ai didi

angular - 来自 Angular 4 的 HttpInterceptor 单元测试

转载 作者:太空狗 更新时间:2023-10-29 16:57:01 25 4
gpt4 key购买 nike

你能告诉我如何测试 Angular 4 提供的 HttpInterceptor 吗?我已经按照示例创建了一个拦截器,但不确定如何测试它。下面是我的拦截器,我想测试是否添加了自定义 header 以及响应状态何时为 401 window.location.href 完成。

export class MyInterceptor implements HttpInterceptor {

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const headers = new HttpHeaders();
this.addHeader(headers); // This will add headers

const changedReq = req.clone({ headers: headers });
return next.handle(req)
.catch(err => {
if (err instanceof HttpErrorResponse) {
switch (err.status) {
case 302:
case 401:
window.location.href = "http//google.com";
break;
default:
throw new Error(this.getErrorMessage(err));
}
}

return Observable.throw(err);
});
}

最佳答案

我在测试类似的东西时遇到了困难,但感谢 Alisa 的文章 Intercepting HTTP Requests我让它工作了

    import {TestBed, inject} from '@angular/core/testing';
import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
import {HTTP_INTERCEPTORS, HttpClient} from '@angular/common/http';

import {LangInterceptorService} from './lang-interceptor.service';

describe('Lang-interceptor.service', () => {
beforeEach(() => TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [{
provide: HTTP_INTERCEPTORS,
useClass: LangInterceptorService,
multi: true
}]
}));

describe('intercept HTTP requests', () => {
it('should add Accept-Language to Headers', inject([HttpClient, HttpTestingController],
(http: HttpClient, mock: HttpTestingController) => {

http.get('/api').subscribe(response => expect(response).toBeTruthy());
const request = mock.expectOne(req => (req.headers.has('Accept-Language') && req.headers.get('Accept-Language') === 'ar'));

request.flush({data: 'test'});
mock.verify();
}));
});

afterEach(inject([HttpTestingController], (mock: HttpTestingController) => {
mock.verify();
}));
});

关于angular - 来自 Angular 4 的 HttpInterceptor 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46225164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com