我遇到了一个带有 Wiremock 设置和 spring boot 应用程序的问题。
背景: 当前的应用程序设置为功能测试(spring profile -
)实现了 wiremock,以模拟多个下游服务的响应。test
我需要为应用程序设置性能测试环境(
perf
),我将为perf
环境使用不同的wiremock配置。
由于涉及多个下游服务,我想模拟下游服务的延迟响应以获得准确的结果。 Wiremock 为我们提供了以下配置来做到这一点:
"fixedDelayMilliseconds": <x milliseconds>
(参考:https://wiremock.org/docs/simulating-faults/)
但是如果我在当前的 wiremock 配置中包含此参数,它也会应用于功能测试(弹簧配置文件
test
)。请建议一种基于弹簧配置文件添加此延迟的方法,仅适用于perf
但不适用于test
.
我正在考虑为
perf
env 实现模拟服务实现并在那里添加响应延迟,但如果可能的话,我想通过配置来实现。
当配置文件
WireMockConfigurationCustomizer
处于活动状态时,您可以创建一个perf
并注册一个设置该延迟的扩展,而不是直接在您的wiremock 存根定义中设置延迟。
@Configuration
public class WiremockConfig {
@Bean
@Profile("perf")
public WireMockConfigurationCustomizer wiremockConfig() {
return config -> config.extensions(
new ResponseDefinitionTransformer() {
@Override
public ResponseDefinition transform(Request request, ResponseDefinition response, FileSource fileSource, Parameters parameters) {
return ResponseDefinitionBuilder.like(response).withFixedDelay(2000).build();
}
@Override
public String getName() {
return "inject-delay-transformer";
}
}
);
}
}