我想验证我的方法是以固定顺序使用不同的参数调用的。 我试过这个:
org.mockito.Mockito.verify(mock).myMethod(arg1);
org.mockito.Mockito.verify(mock).myMethod(arg2);
//was myMethod called with arg1 before it was called with arg2?
但这并没有考虑到顺序。 有一个简单的方法吗?
答案 0 :(得分:5)
Mockito提供InOrder来验证订单中的来电
看一下这个文件:Verification in order
示例:
MyClass mock = mock(MyClass.class);
InOrder order = inOrder(mock);
order.verify(mock).myMethod("first");
order.verify(mock).myMethod("second");
最后两行将验证是否按顺序和参数调用了模拟对象。
答案 1 :(得分:2)
您可以使用ArgumentCaptor。以下是Mockito Javadoc的片段:
ArgumentCaptor<Person> peopleCaptor = ArgumentCaptor.forClass(Person.class);
verify(mock, times(2)).doSomething(peopleCaptor.capture());
List<Person> capturedPeople = peopleCaptor.getAllValues();
assertEquals("John", capturedPeople.get(0).getName());
assertEquals("Jane", capturedPeople.get(1).getName());