基于 spring boot 应用程序中的 spring 配置文件的 Wiremock 设置

问题描述 投票:0回答:1

我遇到了一个带有 Wiremock 设置和 spring boot 应用程序的问题。

背景: 当前的应用程序设置为功能测试(spring profile -

test
)实现了 wiremock,以模拟多个下游服务的响应。

我需要为应用程序设置性能测试环境(

perf
,我将为
perf
环境使用不同的wiremock配置。 由于涉及多个下游服务,我想模拟下游服务的延迟响应以获得准确的结果。 Wiremock 为我们提供了以下配置来做到这一点:

"fixedDelayMilliseconds": <x milliseconds>

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

但是如果我在当前的 wiremock 配置中包含此参数,它也会应用于功能测试(弹簧配置文件

test
)。请建议一种基于弹簧配置文件添加此延迟的方法,仅适用于
perf
但不适用于
test
.

我正在考虑为

perf
env 实现模拟服务实现并在那里添加响应延迟,但如果可能的话,我想通过配置来实现。

java spring spring-boot performance-testing wiremock
1个回答
0
投票

当配置文件

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";
                    }
                }
        );
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.