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);
}
}
您是否尝试过使用@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
希望这会有所帮助!