【发布时间】:2021-01-26 15:01:11
【问题描述】:
有没有办法在将模拟注入另一个组件之前对其进行初始化?
举个例子,我有以下课程:
@Service
SomeService {
@Autowired
public SomeService(SomeConfig config)
}
@Configuration
@Getter
@Setter
public class SomeConfig {
private String someValue;
}
在我的测试中,我正在执行以下操作:
@MockBean
SomeConfig someConfig;
@Autowired
SomeService someService;
问题是,SomeService 构造函数已经在访问 SomeConfig 成员,而我什至无法使用 when(someConfig.getSomeValue()).thenReturn("something") 对其进行初始化,从而导致 NullPtrException。
在SomeService 被实例化之前是否有一个钩子被执行?
【问题讨论】:
-
在你的测试中你不应该在
SomeService上做@InjectMocks而不是@Autowired吗? -
您能否提供您的测试方法,以便我们对您要测试的内容有更多的了解?
标签: java spring spring-boot junit mockito