提问者:小点点

基于Spring启动应用程序中的Spring配置文件的Wiremck设置


我遇到了一个问题与Spring启动应用程序的Wiremck设置。

背景:当前的应用程序设置已为功能测试(Spring profile-test)实现了wiremck,以模拟多个下游服务的响应。

我需要为应用程序设置性能测试环境(perf),我将为perf环境使用不同的wiremck配置。由于涉及多个下游服务,我想模拟下游服务的延迟响应以获得准确的结果。Wiremck为我们提供了以下配置来做到这一点:

“固定延迟毫秒”:

(参考:https://wiremock.org/docs/simulating-faults/)

但是如果我在当前的wiremck配置中包含此参数,它也将应用于功能测试(Spring profiletest)。请建议一种方法,仅针对perf而不是test添加基于Spring profile的此延迟。

我正在考虑为perfenv实现模拟服务实现并在那里添加响应延迟,但如果可能的话,我想通过配置来实现这一点。


共1个答案

匿名用户

当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";
                    }
                }
        );
    }
}