Mockito被用来模拟同一个方法两次,它应该为每次模拟返回不同的值。但是当我测试时,它总是考虑最近模拟的返回值。
serviceB.getById(1) .thenReturn (FirstValue);返回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());
如何解决当(serviceB.getById(2)).thenReturn(LatestValue);将返回LatestValue代替FirstValue
?尽管Object1
和Object2
是不同的对象,但它们具有相同的值。
考虑到我在问题中发布的代码片段,Mockito总是为两行返回latestValue
:
when(serviceB.getById(Object1)).thenReturn(FirstValue);
when(serviceB.getById(Object2)).thenReturn(LatestValue);
但是,如果我在传递给模拟之前更改Object1
值,则它可以正常工作。下面的代码解决了这个问题:
Object1.setPropertyValue(anyValueDifferentFromObject2)