Spring Cloud Contract Stub Runner:如何配置Wiremock服务器?

问题描述 投票:1回答:1
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;
    }

}

上面的定制器bean似乎没有任何作用。此功能没有太多的文档。使用安全令牌标头,Wiremock的(jettty)默认值太小。

我将start.spring.io与(当前)默认值一起使用:spring boot 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);
    }
}
wiremock spring-cloud-contract
1个回答
0
投票

您是否尝试过使用@AutoConfigureStubRunner注释?

只需在测试中添加以下注释:

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

这里存根模式是类路径,这意味着存根将在类路径中可用。

为此添加:

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 

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.