mockito when().thenReturn() 返回错误值
mockito when().thenReturn() is returning the wrong value
Mockito 被用来模拟同一个方法两次,它应该 return 每个模拟的不同值。
但是当我测试时,它总是会考虑最新的模拟 return 值。
这一行 when(serviceB.getById(1)).thenReturn(FirstValue);
return正在 LatestValue 代替 FirstValue
目前看起来是这样的:
when(serviceA.findById(any(String.class))).thenReturn(Object1);
when(serviceB.getById(Object1)).thenReturn(FirstValue);
when(serviceC.convert(any(Integer.class), any(Integer.class))).thenReturn(Object2);
when(serviceB.getById(Object2)).thenReturn(LatestValue);
when(serviceA.save(Object2)).then(returnsFirstArg());
如何以 when(serviceB.getById(2)).thenReturn(LatestValue); 的方式修复它会 return LatestValue 而不是 FirstValue 吗?
尽管是不同的对象,Object1
和 Object2
具有相同的值。
考虑到我在问题中发布的代码片段,Mockito 总是为两行返回 latestValue
:
when(serviceB.getById(Object1)).thenReturn(FirstValue);
when(serviceB.getById(Object2)).thenReturn(LatestValue);
但是如果我在传递给模拟之前更改 Object1
值,那么它可以正常工作。像下面这样的东西解决了这个问题:
Object1.setPropertyValue(anyValueDifferentFromObject2)
Mockito 被用来模拟同一个方法两次,它应该 return 每个模拟的不同值。 但是当我测试时,它总是会考虑最新的模拟 return 值。
这一行 when(serviceB.getById(1)).thenReturn(FirstValue); return正在 LatestValue 代替 FirstValue
目前看起来是这样的:
when(serviceA.findById(any(String.class))).thenReturn(Object1);
when(serviceB.getById(Object1)).thenReturn(FirstValue);
when(serviceC.convert(any(Integer.class), any(Integer.class))).thenReturn(Object2);
when(serviceB.getById(Object2)).thenReturn(LatestValue);
when(serviceA.save(Object2)).then(returnsFirstArg());
如何以 when(serviceB.getById(2)).thenReturn(LatestValue); 的方式修复它会 return LatestValue 而不是 FirstValue 吗?
尽管是不同的对象,Object1
和 Object2
具有相同的值。
考虑到我在问题中发布的代码片段,Mockito 总是为两行返回 latestValue
:
when(serviceB.getById(Object1)).thenReturn(FirstValue);
when(serviceB.getById(Object2)).thenReturn(LatestValue);
但是如果我在传递给模拟之前更改 Object1
值,那么它可以正常工作。像下面这样的东西解决了这个问题:
Object1.setPropertyValue(anyValueDifferentFromObject2)