WireMock не преобразует ответ - PullRequest
0 голосов
/ 02 ноября 2018

У меня проблема с использованием 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, чтобы это изменило мои ответы?

1 Ответ

0 голосов
/ 02 ноября 2018

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

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));
...