我有以下的测试方法:的Mockito:通缉,但不调用
MyClass myClass= Mockito.mock(MyClass.class);
Mockito.when(myClass.methodUsedInMethodBeingTested(Matchers.any(MyTypeParam.class))).thenReturn(Collections.<X, Y> emptyMap());
assertNull(myClass.methodToTest(myObject));
Mockito.verify(myClass).methodUsedInMethodBeingTested(Matchers.any(MyTypeParam.class));
的methodUsedInMethodBeingTested
是,我想嘲弄,并返回一个空映射的方法。但我收到失败消息说
Wanted but not invoked myClass.methodUsedInMethodBeingTested()
。
MyClass
{
public XYZ methodToTest()
{
....
....
Map<X,Y> mp = methodUsedInMethodBeingTested(myTypeParam);
.....
}
public Map<X,Y> methodUsedInMethodBeingTested(MyTypeParam myTypeParam)
{
.....
}
}
感谢您的回答。我有两个疑问:1.我无法做到这一点MyClass spy = Mockito.spy(MyClass.class);因为它说Type mIsmatch无法从类转换为MyClass。 2.你能否更好地解释这个问题“虽然有一个警告:因为它是真正的方法被调用,所以你不应该使用Mockito.when,而应该选择Mockito.doReturn(...),否则该方法会被称为一次真实:“ –
Kode
@Vwin我编辑过。我使用了一种不能在您的Mockito版本中出现的新方法。为了您的第二个顾虑,我也澄清了。 – Tunaki
这是完美的。有效。感谢@RomanVottner。谢谢Tunaki,你真棒:)而且解释变得更有意义。 – Kode