我们的应用程序使用HttpInterceptor将JSON属性从驼峰式转换为蛇形。
我在karma.conf.js中配置协定,并在那里设置协定代理。
对于我的测试,我使用TestBed:
TestBed.configureTestingModule({
imports: [
HttpClientModule
],
providers: [
EmployeeService,
{ provide: SERVER_URLS, useValue: TokenPactMock.SERVER_URLS() },
{ provide: HTTP_RETRY_ATTEMPTS, useValue: TokenMock.HTTP_RETRY_ATTEMPTS() }
],
});
这是我的测试
const employeeService: EmployeeService = TestBed.get(EmployeeServiceService);
employeeService.addEmployee(employee).subscribe(response => {
expect(response.status).toEqual(201);
expect(response.body).toEqual(employee);
done();
}, error => {
done.fail(error);
});
此测试成功运行,并且生成了pact文件。但是HttpInterceptor未被触发,在PACT文件中,我具有驼峰式属性,而不是蛇形。
有人知道如何将PACT与HttpInterceptor一起使用吗?
答案 0 :(得分:0)
我们找到了答案。这是我们对HttpClientModule和HttpClientTestingModule之间的区别的误解。
在HttpClientModule中,我们必须显式定义侦听器:
TestBed.configureTestingModule({
imports: [
HttpClientModule
],
providers: [
EmployeeService,
{ provide: SERVER_URLS, useValue: TokenPactMock.SERVER_URLS() },
{ provide: HTTP_INTERCEPTORS, useClass: HttpNamingInterceptor, multi: true },
{ provide: HTTP_RETRY_ATTEMPTS, useValue: TokenMock.HTTP_RETRY_ATTEMPTS() }
],
});