是否可以更改从模拟对象返回的值?
下面是一个解释我想要做什么的例子。
public class MyClass{
public void method(Mock obj){
if(obj.getValue.equals("value"){
obj.setValue("changedValue");
}
anotherObj.call(obj.getValue());
}
所以上面的类非常简化。如果传入的值等于 value,它将更改返回的值。
@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 是否使用更改的值调用,但由于我们已将返回值模拟为 'value',这将失败,因为返回了 'value'。
是否可以使用模拟的 returnValue 创建测试?