Я использую Mockito для записи unit test в Java, и я хотел бы проверить, что определенный метод является последним, вызывающим объект.
Я делаю что-то подобное в тестируемом коде:
row.setSomething(value);
row.setSomethingElse(anotherValue);
row.editABunchMoreStuff();
row.saveToDatabase();
В моем макете меня не волнует порядок, в котором я редактирую все в строке, но очень важно, что я не пытаюсь сделать что-нибудь еще после того, как я его сохранил. Есть ли хороший способ сделать это?
Обратите внимание, что я не ищу подтвержденияNoMoreInteractions: он не подтверждает, что saveToDatabase - это последняя вызванная вещь, и она также терпит неудачу, если я вызываю что-либо в строке, которую я явно не проверяю. Я хотел бы сказать что-то вроде:
verify(row).setSomething(value);
verify(row).setSomethingElse(anotherValue);
verifyTheLastThingCalledOn(row).saveToDatabase();
Если это помогает, я перехожу к Mockito из теста JMock, который сделал это:
row.expects(once()).method("saveToDatabase").id("save");
row.expects(never()).method(ANYTHING).after("save");