WireMock не преобразует ответ

У меня проблема с использованием WireMock, я расширил ResponseTransformer и реализовал все необходимые методы, это выглядит так:

public class TempResponseTransformer extends ResponseTransformer {

    @Override
    public Response transform(Request request, Response response, FileSource fileSource,
                              Parameters parameters) {
        return Response.Builder.like(response).but().status(404).body("1").build();
    }

    @Override
    public boolean applyGlobally() {
        return false;
    }

    @Override
    public String getName() {
        return "temp-response-transformer";
    }
}

Теперь я хочу применить этот конкретный трансформатор к одному из написанных мною заглушек, заглушка выглядит так:

private static void initTempStub() {
    stubFor(post(urlPathEqualTo("/api/v1/temp"))
            .withHeader("AccessToken", matching("[a-zA-Z0-9]+"))
            .withHeader("CliendID", matching("[a-zA-Z0-9]+"))
            .withHeader("ClientSecret", matching("[a-zA-Z0-9]+"))
            .willReturn(aResponse()
                    .withTransformers("temp-response-transformer")));
}

Когда я запускаю сервис и выполняю почтовые вызовы, я вижу, что трансформатор применяется, однако ответы на самом деле не преобразуются. Я пытался применить трансформатор в разделе конфигурации при запуске службы, но это не помогает.

Итак, мой вопрос: как мне правильно применить ReponseTransformer, чтобы он изменил мои ответы?


person Mikhail    schedule 02.11.2018    source источник


Ответы (1)


Хорошо, думаю, я понял это. Вот проблема (?) С WireMock, которую я смог выяснить, глядя на внутренности, вот как я передал конфигурацию:

new WireMockServer(wireMockConfig()
.extensions(TempResponseTransformer.class)
.options().notifier(new ConsoleNotifier(true)))

И проблема с этим кодом заключается в том, что когда вы вызываете options() из wireMockConfig, он создает новый экземпляр WireMockConfig, поэтому мне пришлось извлечь эту конфигурацию в отдельный фрагмент кода, например:

    var wireMockConfig = new WireMockConfiguration();
    wireMockConfig
            .extensions(SamplesResponseTransformer.class)
            .notifier(new ConsoleNotifier(true));
person Mikhail    schedule 02.11.2018
comment
Если вы считаете, что это проблема, зарегистрируйте ее на странице WireMock Github. - person A. Kootstra; 04.11.2018