mockito5.4.0单元测试(6) --按顺序校验mock对象的调用顺序--InOrder对象的使用

发布时间 2023-06-20 16:31:26作者: 梦幻朵颜

mockito官方文档地址: https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#exact_verification

 

按顺序验证是灵活的——您不必一个接一个地验证所有的交互,只需依次测试那些您感兴趣的交互即可。
此外,您可以创建一个InOrder对象,仅传递与顺序验证相关的mock。

// mock一个对象
List singleMock = mock(List.class);

// 使用mock对象来操作add
singleMock.add("a");
singleMock.add("b");
singleMock.add("c");
singleMock.add("d");
singleMock.add("e");

// InOrder可以保证接下来的校验是按照顺序来校验的,也就是a是第一个被添加的,cd是在之后被添加的
InOrder inOrder = inOrder(singleMock);

inOrder.verify(singleMock).add("b");  // 我们可以从b开始验证,也就是可以直接跳过a
inOrder.verify(singleMock).add("d");  // 但是接下来的验证就必须是b之后的值,也就是c,d之类的,否则InOrder就会起作用,就会报错
inOrder.verify(singleMock).add("b");  // 这一行验证了b,由于b在上一行d之前了,所以执行到这一行会报错,因为违反了InOrder的顺序

 

end.