Pact消费者测试角度和HttpIntercepter

问题描述 投票:0回答:1

我们的应用程序使用HttpInterceptor将JSON属性从camel-case转换为snake-case。

我在karma.conf.js中配置pact并在那里设置pact代理。

对于我的测试,我使用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?

karma-runner pact
1个回答
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() }
    ],
});
© www.soinside.com 2019 - 2024. All rights reserved.