我们发现仅仅因为我们将属性放入spring的refreshscope中,并不意味着我们以尊重刷新的方式访问它们。例如,我们可能会将一个属性注入构造函数中,即使刷新了该属性,也不会刷新bean,因此旧属性会持续存在。我们想通过我们的主要案例来测试,以确保我们真正尊重这些更新。
我想要的是一个以property = A开头的测试,在测试过程中将它更改为property = B,并声明所有内容都已正确更新(所以如果它是一个URL,我们现在是调用新的URL)。
我一直遇到一个我认为在这里描述的问题 - Reload or refresh a Spring application context inside a test method?
代码不支持强制刷新属性。我是以错误的方式思考这个问题还是真的不支持?他们声称以这种方式进行测试可能是错误的,但我特别试图测试代码的可刷新性方面。
描述我正在尝试做的一些代码 -
@Autowired
Properties properties;
@Test
public void testRefreshProperties() {
TestConfigurer.environment.setProperty("downstream.server.baseUrl", "http://modified.com");
TestConfigurer.context.refresh();
Assert.assertEquals(
properties.getBaseUrl(),
"http://modified.com");
}
其中TestConfigurer是一个初始化程序,它公开了它的上下文和环境,而Properties类有一个从“downstream.server.baseUrl”属性收集的baseUrl方法。