测试Spring的refreshscope属性

时间:2017-09-05 19:17:39

标签: java spring

我们发现仅仅因为我们将属性放入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方法。

0 个答案:

没有答案