Как сделать Wiremock с реально работающим приложением - PullRequest
0 голосов
/ 09 января 2019

Я хочу развернуть виртуальный сервис или сервис проводного макета, чтобы его можно было динамически подключать к моему приложению при отключении внешнего сервиса.

Я хочу настроить Wire Mock в моем приложении Spring Boot.

Я создал bean-класс MockServer и поместил в него код, который будет запускать фиктивный сервер при загрузке контекста приложения. Также добавлена ​​заглушка для нескольких URL, по которым я хочу получить результат с фиктивного сервера.

Это правильный способ сделать это?

Нужен ли перезапуск сервера для каждого запроса?

Я хочу, чтобы виртуализация или проводная имитация службы имитировали ответ для внешней службы, вызываемой в моем приложении.

Ex. У меня есть приложение MyApp, которое вызывает внутренний ExtApp для получения некоторых данных. Url MyApp / getData будет вызывать внутренне ExtApp / someData. Mock ExtData с MockServer, поэтому он будет возвращен с данными mock / stub.

int PORT = 8090; WireMockServer wireMockServer = null;

@PostConstruct
public void init() {
    wireMockServer = new WireMockServer(
            WireMockConfiguration.wireMockConfig().port(PORT).extensions(new DynamicTransformer()));
    wireMockServer.start();

    configureFor("localhost", PORT);

    stubFor(get(urlPathMatching("/goalSummary/[^/]+/pin")).withHeader("accept", equalTo("application/json"))
            .willReturn(aResponse().withTransformers("dynamic-transformer")));

    stubFor(get(urlEqualTo("/my/resource"))
            .willReturn(aResponse()
                .withStatus(200)
                .withBody("Some response for resource")));
}

public void reset() {

    wireMockServer.resetAll();
}

@PreDestroy
public void stop() {
    wireMockServer.stop();
}

public static class DynamicTransformer extends ResponseDefinitionTransformer {

    @Override
    public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource files,
            Parameters parameters) {
        String path = request.getUrl();
        String dynamicPath = "1111"; // Pull out the dynamic part
        String transformedJson = "{\"name\": \"Shyam\"}"; // Render the JSON
                                                            // string
                                                            // applicable
        return new ResponseDefinitionBuilder().withHeader("Content-Type", "application/json").withStatus(200)
                .withBody(transformedJson).build();
    }

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

}

Это правильный способ сделать в приложении динамически выбрать ExtApp или MockServer url?

Есть ли какой-нибудь лучший подход для выполнения подобных сценариев?

...