我想写这样的东西:
this.spyObject = Mockito.spy(myObject);
...
verify(this.spiedObject, atLastOnce()).getMember().doSomething(any(OneClass.class))
或
this.spyObject = Mockito.spy(myObject);
...
verify(this.spiedObject.getMember(), atLastOnce()).doSomething(any(OneClass.class))
在 Junit 测试中, 知道 myObject 的构造函数是
public MyObject() {
this.member = new Member()
}
显然,它不起作用!
最后,我将能够验证在
doSomething
上调用了 member
。
我对 Mockito 还很初学者:)
请问有什么帮助吗?
听起来你也想
Member
成为一名间谍。在这种情况下,你可以这样做:
@RunWith(MockitoJUnitRunner.class)
public class SomeTestClass {
private MyObject myObjectSpy;
private Member memberSpy;
@Test
public void someTest() {
memberSpy = spy(Member.class);
myObjectSpy = spy(MyObject.class);
doReturn(memberSpy).when(myObjectSpy).getMember();
...
verify(memberSpy, atLeastOnce()).doSomething(any(OneClass.class));
}
}
请注意,如果您打算
仅模拟
doReturn(...)
而不是其其他功能,则将getMember()
与间谍一起使用是部分嘲笑。在这种情况下,请考虑使用完整的模拟并确定其其他函数的返回值应该是什么。