如何测试具有spring cloud config server属性的服务作为依赖项注入其中?
我的服务如下所示:
@Service
class Testing {
private final ExampleProperties exampleProperties
Testing(ExampleProperties exampleProperties) {
this.exampleProperties = exampleProperties
}
String methodIWantToTest() {
return exampleProperties.test.greeting + ' bla!'
}
}
我的项目在启动期间调用spring cloud配置服务器以获取属性,通过bootstrap.properties
上的以下内容启用此功能:
spring.cloud.config.uri=http://12.345.67.89:8888
我的配置如下所示:
@Component
@ConfigurationProperties
class ExampleProperties {
private String foo
private int bar
private final Test test = new Test()
//getters and setters
static class Test {
private String greeting
//getters and setters
}
}
属性文件如下所示:
foo=hello
bar=15
test.greeting=Hello world!
答案 0 :(得分:9)
您可以在测试期间使用@TestPropertySource annotation伪造属性:
@ContextConfiguration
@TestPropertySource(properties = { "timezone = GMT", "port: 4242" })
public class MyIntegrationTests {
// class body...
}
答案 1 :(得分:2)
对于单元测试,只需模拟属性并使用Mockito方法(mockedProperties.getProperty(eq(“propertyName”))。thenReturn(“mockPropertyValue”)就可以了。
对于集成测试,所有Spring上下文都应该被用作常规app,在这种情况下你不需要模拟你的属性。
答案 2 :(得分:2)
另一个选择是使用SpringBootTest注释的属性属性:
@SpringBootTest(properties = {"timezone=GMT", "port=4242"})