我知道你可以在mock上设置几个不同的对象。防爆。
when(someObject.getObject()).thenReturn(object1,object2,object3);
你能以某种方式对间谍物体做同样的事情吗?我在没有运气的间谍上尝试了上述内容。我在文档中读到如下面的间谍使用doReturn()
doReturn("foo").when(spy).get(0);
但deReturn()
只接受一个参数。我想在间谍上按特定顺序返回不同的对象。这可能吗?
我有一个类似下面的类,我正在尝试测试它。我想测试myClass
,而不是anotherClass
public class myClass{
//class code that needs several instances of `anotherClass`
public anotherClass getObject(){
return new anotherClass();
}
}
答案 0 :(得分:38)
您可以在doReturn()
之前链接when()
来电,这样就行了(mockito 1.9.5):
private static class Meh
{
public String meh() { return "meh"; }
}
@Test
public void testMeh()
{
final Meh meh = spy(new Meh());
doReturn("foo").doReturn("bar").doCallRealMethod().when(meh).meh();
assertEquals("foo", meh.meh());
assertEquals("bar", meh.meh());
assertEquals("meh", meh.meh());
}
另外,我不知道你可以做when(x.y()).thenReturn(z1,z2)
,当我必须这样做时,我也会使用链式.thenReturn()
来电:
when(x.y()).thenReturn(z1).thenThrow().thenReturn(z2)