Javascript 具有自定义标头的单元测试拦截器
我一直在尝试在Angular 6的拦截器中运行一个测试单元,但是经过多次尝试和错误后,我不断得到以下错误: 错误:应为条件“按函数匹配:”提供一个匹配请求,但未找到任何匹配请求 我对NG6和它的单元测试有点陌生,在文档中找不到任何东西 这就是我得到的: 令牌服务(由于它与后端没有连接,因此被模拟)Javascript 具有自定义标头的单元测试拦截器,javascript,angular,unit-testing,jasmine,angular-http-interceptors,Javascript,Angular,Unit Testing,Jasmine,Angular Http Interceptors,我一直在尝试在Angular 6的拦截器中运行一个测试单元,但是经过多次尝试和错误后,我不断得到以下错误: 错误:应为条件“按函数匹配:”提供一个匹配请求,但未找到任何匹配请求 我对NG6和它的单元测试有点陌生,在文档中找不到任何东西 这就是我得到的: 令牌服务(由于它与后端没有连接,因此被模拟) 有人能帮我理解我遗漏了什么吗?我想你遗漏了这样一个事实:TokenService不是简单的值,而是使用findtokenada方法返回可观察的类 下面是发生的情况: 您定义了mock: const m
有人能帮我理解我遗漏了什么吗?我想你遗漏了这样一个事实:
TokenService
不是简单的值,而是使用findtokenada
方法返回可观察的类
下面是发生的情况:
您定义了mock:
const mockTokenService = {
headerName: 'x-fake',
token: 'fake'
};
推翻它:
{
provide: TokenService,
useValue: mockTokenService
},
现在Angular将使用这个mockTokenService
对象作为RestInterceptor
中注入的值,然后
this.tokenService.findTokenData().subscribe(res => {
||
undefined => error
下面是您可以采取的措施:
import { of } from 'rxjs';
...
const mockToken = {
headerName: 'x-fake',
token: 'fake'
};
const mockTokenService = {
findTokenData: () => {
return of(mockToken);
}
};
...
const req = httpMock.expectOne(r =>
r.headers.has(`${mockToken.headerName}`) &&
r.headers.get(`${mockToken.headerName}`) === `${mockToken.token}`);
我认为您忽略了一个事实,即
TokenService
不是简单的值,而是使用findtokenada
方法进行分类,该方法返回可观察值
下面是发生的情况:
您定义了mock:
const mockTokenService = {
headerName: 'x-fake',
token: 'fake'
};
推翻它:
{
provide: TokenService,
useValue: mockTokenService
},
现在Angular将使用这个mockTokenService
对象作为RestInterceptor
中注入的值,然后
this.tokenService.findTokenData().subscribe(res => {
||
undefined => error
下面是您可以采取的措施:
import { of } from 'rxjs';
...
const mockToken = {
headerName: 'x-fake',
token: 'fake'
};
const mockTokenService = {
findTokenData: () => {
return of(mockToken);
}
};
...
const req = httpMock.expectOne(r =>
r.headers.has(`${mockToken.headerName}`) &&
r.headers.get(`${mockToken.headerName}`) === `${mockToken.token}`);
这正是我所缺少的,也感谢你对这个问题的解释。很好的解释@yurzui。有这样一个解释的答案真的很有帮助。这正是我所缺少的,也谢谢你在这里给出关于这个问题的解释。很好的解释@yurzui。有这样一个解释的答案真的很有帮助。