Whi*_*cal 5 java spring unit-testing mockito spring-boot
我有一个类似的设置:
豆类:
private final Map<String, String> configCache = new HashMap<>();
@PostConstruct
private void fillCache() { (...) configCache.clear();}
Run Code Online (Sandbox Code Playgroud)
测试配置类:
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
@Primary
public Bean beanMock() {
return Mockito.mock(Bean.class);
}
Run Code Online (Sandbox Code Playgroud)
测试类:其中@Autowires的bean。
似乎当 Mockito 在 TestConfig 中创建模拟时,它调用 @PostConstruct 似乎在初始化 map 字段之前调用它,因此它抛出异常。
我的问题是:
编辑:显然调用是在 Spring 从 Config 的 @Bean 方法中重新获取 bean 之前的实例化之后完成的
Mockito 没有打电话@PostConstruct——Spring 来了。你说在你的测试中你使用@Autowired,这不是 Mockito 注释。
如果您打算使用@Mock,您会发现 Mockito 不会调用您的@PostConstruct方法。
换句话说,像这样编写测试类:
@Mock Bean myBean;
@Before
public void before() {
MockitoAnnotations.initMocks();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14238 次 |
| 最近记录: |