如何使用@postConstruct方法模拟豆
我需要模拟一些包含@postConstruct
方法的类,但是我在nullpoInterException
@postConscontconscont 方法中获得了nullpoInterException
。
我的代码看起来如下:
@SpringJUnitConfig(MyTestClass.Config.class)
class MyTestClass {
@Autowired
MyClass myClass;
@Autowired
MyService service;
@Test
void testService() {
assertNotNull(myClass);
}
@Configuration
static class Config {
@Bean
MyService service(MyClass myClass) {
return Mockito.spy(new MyService(myClass));
}
@Bean
MyClass myClass() {
return mock(MyClass.class);
}
@Bean
ObjectMapper mapper() {
return new ObjectMapper();
}
}
}
public class MyClass {
private ObjectMapper mapper;
@Autowired
public MyClass(ObjectMapper mapper) {
this.mapper = mapper;
}
@PostConstruct
void init() {
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); // I get NPE because mapper is null.
}
}
如何避免此例外?我不能使用@mockbean,因为我必须将此模拟注入另一个豆子。
I need to mock some class that contains @PostConstruct
method, but I get NullPointerException
inside @PostConstruct
method.
My code looks like the following:
@SpringJUnitConfig(MyTestClass.Config.class)
class MyTestClass {
@Autowired
MyClass myClass;
@Autowired
MyService service;
@Test
void testService() {
assertNotNull(myClass);
}
@Configuration
static class Config {
@Bean
MyService service(MyClass myClass) {
return Mockito.spy(new MyService(myClass));
}
@Bean
MyClass myClass() {
return mock(MyClass.class);
}
@Bean
ObjectMapper mapper() {
return new ObjectMapper();
}
}
}
public class MyClass {
private ObjectMapper mapper;
@Autowired
public MyClass(ObjectMapper mapper) {
this.mapper = mapper;
}
@PostConstruct
void init() {
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); // I get NPE because mapper is null.
}
}
How can I avoid this exception? I can't use @MockBean, because I have to inject this mock into another bean.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论