gpt4 book ai didi

java - mockito 在 spy 方法上返回对象序列

转载 作者:IT老高 更新时间:2023-10-28 21:12:22 25 4
gpt4 key购买 nike

我知道您可以设置几个不同的对象以在模拟中返回。前任。

when(someObject.getObject()).thenReturn(object1,object2,object3);

你能以某种方式对 spy 对象做同样的事情吗?我在没有运气的 spy 身上尝试了上述方法。我在文档中阅读了在下面这样的 spy 上使用 doReturn()

doReturn("foo").when(spy).get(0);

但是deReturn()只接受一个参数。我想在 spy 身上按特定顺序返回不同的对象。这可能吗?

我有一个类似以下的类(class),我正在尝试对其进行测试。我想测试 myClass,而不是 anotherClass

public class myClass{

//class code that needs several instances of `anotherClass`

public anotherClass getObject(){
return new anotherClass();
}
}

最佳答案

您可以在 when() 之前链接 doReturn() 调用,这样就可以了(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)

关于java - mockito 在 spy 方法上返回对象序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17714291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com