我遇到了一个问题与Spring启动应用程序的Wiremck设置。
背景:当前的应用程序设置已为功能测试(Spring profile-test
)实现了wiremck,以模拟多个下游服务的响应。
我需要为应用程序设置性能测试环境(perf
),我将为perf
环境使用不同的wiremck配置。由于涉及多个下游服务,我想模拟下游服务的延迟响应以获得准确的结果。Wiremck为我们提供了以下配置来做到这一点:
“固定延迟毫秒”:
(参考:https://wiremock.org/docs/simulating-faults/)
但是如果我在当前的wiremck配置中包含此参数,它也将应用于功能测试(Spring profiletest
)。请建议一种方法,仅针对perf
而不是test
添加基于Spring profile的此延迟。
我正在考虑为perf
env实现模拟服务实现并在那里添加响应延迟,但如果可能的话,我想通过配置来实现这一点。
当profileperf
处于活动状态时,您可以创建一个WireMockConfigurationCustomizer
并注册一个设置延迟的扩展,而不是直接在您的wiremck存根定义中设置延迟。
@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";
}
}
);
}
}