【发布时间】:2016-01-06 14:35:56
【问题描述】:
我有一个这样嘲笑的课程:
@Mock
private MyClass1 mockMyClass1;
假设这个类看起来像这样:
public class MyClass1 {
@Autowired
private MyInnerClass myInnerClass;
}
当我模拟MyClass1 时,MyInnerClass 将被初始化为null。是否可以用另一个反对的模拟来初始化该私有字段?我希望myInnerClass 成为这样的模拟:
@Mock
private MyInnerClass myInnerClass;
如果我使用以下代码:
@InjectMocks
private MyClass1 mockMyClass1;
@Mock
private MyInnerClass myInnerClass
这会将MyClass1 中的私有MyInnerClass 初始化为模拟对象,但是这样mockMyClass1 本身就不再是模拟对象了,不是吗(我只是在真正的类,就像@Autowired 会在它里面注入一个真实的对象)?如果我对@InjectMock 和@Mock 的理解有误,您能否纠正我的逻辑?另外,我如何在另一个模拟对象中注入一个模拟对象(不使用设置器/构造函数)?
【问题讨论】:
-
你应该对行为而不是实现进行存根。
标签: java spring testing mockito