java 在spring Boot 应用程序中基于spring profile的Wiremock设置

pcrecxhr  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(193)

bounty将在6天后到期。回答此问题可获得+50声望奖励。Ashutosh Sharma正在寻找来自信誉良好的来源的答案

我遇到了一个问题与Wiremock设置与Spring Boot 应用程序。

**背景:**当前的应用设置已经实现了wiremock功能测试(spring profile -test),模拟多个下游服务的响应。

我需要为应用程序设置性能测试环境(perf,我将为perf环境使用不同的Wiremock配置。由于涉及多个下游服务,我想模拟下游服务的延迟响应以获得准确的结果。Wiremock为我们提供了以下配置:
"fixedDelayMilliseconds": <x milliseconds>
ref:https://wiremock.org/docs/simulating-faults/
但是如果我在当前的wiremock配置中包含此参数,它也将应用于功能测试(spring profile test)。请建议一种方法,仅为perf而不是test添加基于spring profile的延迟。
我正在考虑为perf env实现模拟的服务实现,并在那里添加响应延迟,但如果可能的话,我希望通过配置来实现这一点。

vc6uscn9

vc6uscn91#

您可以在配置文件perf处于活动状态时创建一个WireMockConfigurationCustomizer,并注册一个设置该延迟的扩展,而不是直接在您的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";
                    }
                }
        );
    }
}

相关问题