Spring Cloud Contract Stub Runner: как настроить сервер Wiremock? - PullRequest
1 голос
/ 10 марта 2020
package com.example.stubrunner;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.contract.stubrunner.server.EnableStubRunnerServer;
import org.springframework.cloud.contract.wiremock.WireMockConfigurationCustomizer;
import org.springframework.context.annotation.Bean;


@SpringBootApplication
@EnableStubRunnerServer
public class StubRunnerApplication {

    public static void main(String[] args) {
        SpringApplication.run(StubRunnerApplication.class, args);
    }


    @Bean
    public WireMockConfigurationCustomizer optionsCustomizer() {

        WireMockConfigurationCustomizer customizer = new WireMockConfigurationCustomizer() {
            @Override
            public void customize(com.github.tomakehurst.wiremock.core.WireMockConfiguration config) {
                config.jettyHeaderBufferSize(16384);
            }
        };

        return customizer;
    }

}

Вышеуказанный компонент настройки не оказывает никакого влияния. Эта функция не имеет много документации. С заголовками токенов безопасности значение по умолчанию в Wiremock (jettty) слишком мало.

Я использовал start.spring.io с (текущими) значениями по умолчанию: весенняя загрузка 2.5.5. и весеннее облако Hoxton.SR3.

java -jar wiremock-standalone-2.26.3.jar --jetty-header-buffer-size 16384

работает просто отлично.

РЕДАКТИРОВАТЬ:

package com.example.wiremockrunnerlatest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.contract.stubrunner.server.EnableStubRunnerServer;
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner;

@SpringBootApplication
@EnableStubRunnerServer
@AutoConfigureStubRunner(httpServerStubConfigurer = HeaderSizeConfigurer.class)
public class WiremockRunnerLatestApplication {

    public static void main(String[] args) {
        SpringApplication.run(WiremockRunnerLatestApplication.class, args);
    }

}

... а затем:

public class HeaderSizeConfigurer extends WireMockHttpServerStubConfigurer {

    @Override
    public WireMockConfiguration configure(WireMockConfiguration httpStubConfiguration, HttpServerStubConfiguration httpServerStubConfiguration) {

        return httpStubConfiguration.jettyHeaderBufferSize(16384);
    }
}

1 Ответ

0 голосов
/ 05 апреля 2020

Вы пытались использовать аннотацию @AutoConfigureStubRunner?

Просто добавьте ниже аннотацию в своих тестах:

@AutoConfigureStubRunner(
    stubsMode = StubRunnerProperties.StubsMode.CLASSPATH,
    ids = "com.org:servicename:+:stubs")

Здесь stubsmode - это classpath, что означает, что заглушки будут доступны в classpath.

для этого добавьте:

testCompile("com.org:servicename:+:stubs") { transitive = false }

в вашу сборку, если вы используете gradle или добавьте эквивалент из maven. Это автоматически загрузит приложение с удаленного компьютера и настроит сервер Wiremock для доступа к заглушкам.

Полная конфигурация для запуска теста весенней загрузки выглядит следующим образом:

@RunWith(SpringRunner.class)
@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.MOCK,
    classes = HiltiIntegrationApplication.class)
@AutoConfigureStubRunner(
    stubsMode = StubRunnerProperties.StubsMode.CLASSPATH,
    ids = "com.ict:organization-management:+:stubs")
@DirtiesContext 

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...