java - MockitoJunitRunner 可以模拟 Spring @Configuration 类,但所有字段均为空
问题描述
我有一个这样的配置类:
@Configuration
@ComponentScan(basePackages = "com.**.**") // production code, can't write package name
@EnableCaching
@PropertySource(value = { "classpath:application.properties", "classpath:version.txt"})
@EnableScheduling
public class AppConfig {
@Value("${builtProfile}")
@Nonnull
private String activeProfile;
...
}
这是测试类:
@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(classes = {AppConfig.class, MvcConfiguration.class})
@ActiveProfiles("test")
public class NativeLoginServiceImplTest {
@InjectMocks
private NativeLoginServiceImpl nativeLoginServiceImpl;
@Mock
private AppConfig mAppConfiguration;
}
是在测试期间创建的mAppConfiguration
,但问题是它的所有字段都是空的。我的测试设置有什么问题,如何制作正确的设置,以便 Mockito 可以自动application.properties
为我获取文件中的这些值?
解决方案
我想对于您的领域,您至少有 getter 方法。您应该使用when
和thenReturn
方法来进行模拟工作。像这样:
@Test
public void someTestMethod(){
Mockito.when(mAppConfiguration.getActiveProfile()).thenReturn("some value");
/** actual test goes here**/
}
推荐阅读
- reactjs - 在 SPA (React JS) 中针对 Azure AD 组授权用户的最佳方式
- vim - Vim:自定义 grep 查找文件但不打开它们
- mysql - 在论坛上获取某个类别的最新帖子
- java - tomcat8 - 外部 jars 目录可用于 webapp
- python - Python – 不检索所有 json 对象,只检索最后一个
- sql - 序列没有得到当前的下一个数字
- php - PHP如何获取带有值的键,FireBase
- c++ - 为什么保存到文件没有按预期工作?
- sql-server - SSIS数据流不写前几批
- reactjs - onChange 事件 - 找不到节点