gpt4 book ai didi

java - Mockito 允许设置模拟返回值

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:57 27 4
gpt4 key购买 nike

是否可以更改从模拟对象返回的值?

下面是一个解释我正在尝试做的事情的例子。

public class MyClass{
public void method(Mock obj){
if(obj.getValue.equals("value"){
obj.setValue("changedValue");
}

anotherObj.call(obj.getValue());
}

所以上面的类非常简化。如果传入的值等于值,它将更改返回的值。

@Test
public void test(){
Mock obj = mock(Mock.class);
when(obj.getValue()).thenReturn("value");

testClass.method(obj);

verify(anotherObj, times(1)).call("changedValue");
}

测试想要验证 anotherObj.call 是否使用更改后的值调用,但由于我们已将返回值模拟为“值”,因此将失败,因为返回了“值”。

是否可以使用模拟的 returnValue 创建测试?

最佳答案

乔纳坦是对的。如果 obj 不是一个复杂的对象,您可以避免模拟它并使用真实的对象。

如果由于某种原因这是不可能的,mockito 允许定义一系列答案,例如:when(obj.getValue()).thenReturn("value").thenReturn("modifiedValue"); 这可能是您正在寻找的内容。

虽然这可能有点矫枉过正,但为了确保一切正常,我还会 verify(obj).setValue("changedValue");verify(obj, times( 2)).getValue();

关于java - Mockito 允许设置模拟返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18868338/

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