Пакт потребительских тестов в угловых и HttpIntercepter - PullRequest
0 голосов
/ 13 февраля 2019

Наше приложение использует HttpInterceptor для преобразования свойств JSON из случая верблюда в случай змеи.

Я настраиваю pact в karma.conf.js и устанавливаю там pact proxy.

Для моего тестаЯ использую 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?

1 Ответ

0 голосов
/ 04 марта 2019

Мы нашли ответ.Это было наше неправильное понимание разницы между 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() }
    ],
});
...