我有一个像这样的设置:
Bean class:
private final Map<String, String> configCache = new HashMap<>();
@PostConstruct
private void fillCache() { (...) configCache.clear();}
测试配置 class:
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
@Primary
public Bean beanMock() {
return Mockito.mock(Bean.class);
}
Test类别:哪个@Autowires
豆子。
似乎当 Mockito 在 TestConfig 中创建模拟时,它调用 @PostConstruct ,而 @PostConstruct 又似乎在初始化映射字段之前被调用,因此它抛出异常。
我的问题是:
- 为什么 Mockito 调用 @PostConstruct?
- 如何禁用 @PostConstruct 进行模拟?
编辑:显然调用是在实例化之后完成的,就在 Spring 从 Config 的 @Bean 方法返回 bean 之前完成
Mockito 没有打电话@PostConstruct
——春天来了。你说在你的测试中你使用@Autowired
,这不是 Mockito 注释。
如果你想使用@Mock
,你会发现 Mockito 不会调用你的@PostConstruct
method.
换句话说,像这样编写测试类:
@Mock Bean myBean;
@Before
public void before() {
MockitoAnnotations.initMocks();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)