gpt4 book ai didi

java - Mockito + Spring + @PostConstruct,mock初始化错误,为什么调用@PostConstruct?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:14 26 4
gpt4 key购买 nike

我有这样的设置:

Bean类:

private final Map<String, String> configCache = new HashMap<>();
@PostConstruct
private void fillCache() { (...) configCache.clear();}

TestConfig类:

@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
@Primary
public Bean beanMock() {
return Mockito.mock(Bean.class);
}

测试类:@Autowires bean。

似乎当 Mockito 在 TestConfig 中创建 mock 时,它调用了 @PostConstruct,后者似乎在 map 字段初始化之前被调用,因此它抛出异常。

我的问题是:

  • 为什么 Mockito 调用 @PostConstruct?
  • 如何禁用 @PostConstruct 进行模拟?

编辑:显然调用是在实例化之后完成的,就在 Spring 从 Config 的 @Bean 方法返回 bean 之前

最佳答案

Mockito 不调用 @PostConstruct —— Spring 调用。你说在你的测试中你使用了 @Autowired,这不是 Mockito 注释。

如果您打算使用 @Mock,您会发现 Mockito 不会调用您的 @PostConstruct 方法。

换句话说,像这样编写你的测试类:

@Mock Bean myBean;

@Before
public void before() {
MockitoAnnotations.initMocks();
}

关于java - Mockito + Spring + @PostConstruct,mock初始化错误,为什么调用@PostConstruct?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com