我正在尝试测试 http 拦截器,但找不到任何方法。
我不知道为什么 url 不匹配,因为我的令牌记录在控制台中并且请求 url 也是相同的。我在没有拦截器的情况下使用这种方法测试了我所有其他的 http 服务,一切都通过了......
这是拦截器类,代码工作并在每个请求中添加我的不记名令牌,它使用在测试中模拟的 Ionic Platform 本机类:
@Injectable()
export class AddHeaderInterceptor implements HttpInterceptor {
public constructor(
private auth: AuthService, private platform: Platform,
private config: ConfigurationService
) {}
public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.debug('req', req.url);
return Observable.fromPromise(this.platform.ready())
.switchMap(() => Observable.fromPromise(this.auth.getToken()))
.switchMap((tokens: TokenCacheItem[]) => {
const baseUrl = new RegExp(this.config.getValue('baseUrl'), 'g');
if (! req.url.match(baseUrl)) {
return Observable.of(null);
}
if (tokens.length > 0) {
return Observable.of(tokens[0].accessToken);
}
return Observable.throw(null);
})
.switchMap((token: string) => { …Run Code Online (Sandbox Code Playgroud)