进行模拟测试时,如何注入application.properties中定义的值。
Service.java
@Override
public String getUseLanguage() {
return applicationProperties.getLanguage();
}
ApplicationProperties.java
public class ApplicationProperties {
@Value("${language}")
private String Language;
public String getLanguage() {
return Language;
}
application.properties
Language = EN;
我的测试用例:
@RunWith(MockitoJUnitRunner.class)
public class TimChannelServiceTest {
@Mock
private ApplicationProperties applicationProperties;
@InjectMocks
private Service Service;
@Test
public void getUseLanguage(){
assertEquals(applicationProperties.getLanguage(),Service.getUseLanguage());
}
}
似乎@Value没有注入ApplicationProperties,applicationProperties.getLanguage()和Service.getUseLanguage()均为null。
谁能告诉我如何处理这个问题
最佳答案
您在测试中模拟applicationProperties
字段,但不提供任何行为。这就意味着在返回null
时调用的方法。
此外,如果要按预期方式注入属性,为什么还要嘲笑?
要测试application.properties
值,请用@SpringBootTest
注释您的类,该类将加载Spring上下文,并以此方式加载环境属性。