能否更改从模拟对象返回的值?下面是一个示例,说明了我想做什么。
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”,因此这将失败。
是否可以使用模拟的returnValue创建测试?