mockito (). thenreturn()返回错误的值



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

?

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

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

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

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

Object1.setPropertyValue(anyValueDifferentFromObject2)

相关内容

  • 没有找到相关文章