【发布时间】:2016-10-24 14:45:59
【问题描述】:
所以我有一个简单的java类:
@Component
public class IWantToTestThisClass {
@Autowired
private ClassA classA;
@Autowired
private ClassB classB;
public ObjectA doIt(...) {
classB.returnObject();
}
A 类包含:
@Component
public class ClassA {
@Autowired
private ClassB classB;
public ObjectA doIt() {
classB.returnObject(...);
}
B 类:
@Component
public class ClassB {
public ObjectA returnObject(...) {
...
}
我的测试设置如下所示:
@InjectMocks
private IWantToTestThisClass iWantToTestThisClass;
@Mock
private ClassA classA;
@Mock
private ClassB classB;
@Before
public void setUp() {
initMocks(this);
when(classA.doSmt()).thenCallRealMethod();
when(classB.doSmt()).thenCallRealMethod();
}
问题是ClassA没有注入ClassB。
然后通过classA调用returnObject(ClassB)它返回NullPointerException(ClassB没有被模拟/注入)。
如果通过 IWantToTestThisClass 调用 returnObject(classB) 就可以了。
这是一种同时为两个类注入 ClassB 的方法吗?我想调用真实的方法,而不是模拟的方法。
【问题讨论】:
-
我知道这是 NullPointerException 以及为什么我得到它。 :)
-
你能更新你的完整测试课程吗
-
问题写的真清楚。
-
请提供minimal reproducible example。根据您的代码的基本假设,这对我来说很好。
标签: java spring unit-testing mocking mockito