Я использую Mockito для проверки заказов вызовов методов с объектом InOrder
. Но меня не интересует полное упорядочение вызовов, только то, что определенная группа вызовов метода все происходит до вызова других методов. Например, например
@Test
public void testGroupOrder() {
Foo foo1 = mock(Foo.class);
Foo foo2 = mock(Foo.class);
Bar underTest = new Bar();
underTest.addFoo(foo1);
underTest.addFoo(foo2);
underTest.fire()
InOrder inOrder = inOrder(foo1,foo2);
inorder.verify(foo1).doThisFirst();
inorder.verify(foo2).doThisFirst();
inorder.verify(foo1).beforeDoingThis();
inorder.verify(foo2).beforeDoingThis();
}
Но этот тест слишком много проверяет, так как он проверяет порядок экземпляров Foo
. Но меня интересует только порядок разных методов. На самом деле я хочу, чтобы underTest
не различал экземпляры Foo
, у них может быть внутренний порядок или нет, поэтому не имеет значения, в каком порядке вызывается foos. Я хотел бы сохранить это как деталь реализации.
Но важно, чтобы doThisFirst()
был вызван во всех foos до того, как beforeDoingThis()
вызывается на любом другом foo. Можно ли выразить это с помощью Мокито? Как?