我在我的应用程序中使用Spring Cloud Circuit Breaker 2.0.0 (resilience4j实现)来断路和超时。我创建了以下配置:
@Bean
public Customizer<Resilience4JCircuitBreakerFactory> defaultCustomizer() {
return factory ->
factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
.timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(10)).build())
.circuitBreakerConfig(..)
.build());
}
现在我想写一个集成测试来验证当超时发生时我的行为是正确的。为了使其工作,我想暂时将上述配置中指定的超时时间更改为1毫秒,而不是10秒。
所以我的问题是:当我编写Spring Boot集成测试时,我如何更改TimeLimiterConfig
(暂时)的超时值?
您可以使用@Value
Spring注释从您的资源文件夹src/main/resources/common.properties
中检索配置文件中的值。
@Bean
public Customizer<Resilience4JCircuitBreakerFactory> defaultCustomizer(
@Value("${duration.milli:600}") int durationMilli) {
return factory ->
factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
.timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofMilli(durationMilli)).build())
.circuitBreakerConfig(..)
.build());
}
然后将值设置为src/main/resources/common.properties
duration.milli=600
当你在做你的测试,你可以配置另一个资源文件在test
文件夹src/test/resources/common.properties
与不同的值。
duration.milli=1