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 吗?

尽管是不同的对象,Object1Object2 具有相同的值。

考虑到我在问题中发布的代码片段,Mockito 总是为两行返回 latestValue

when(serviceB.getById(Object1)).thenReturn(FirstValue);
when(serviceB.getById(Object2)).thenReturn(LatestValue);

但是如果我在传递给模拟之前更改 Object1 值,那么它可以正常工作。像下面这样的东西解决了这个问题:

Object1.setPropertyValue(anyValueDifferentFromObject2)