Mockitoを使用してJavaで単体テストを記述していますが、特定のメソッドがオブジェクトで最後に呼び出されるメソッドであることを確認したいと思います。
私はテスト中のコードで次のようなことをしています:
row.setSomething(value);
row.setSomethingElse(anotherValue);
row.editABunchMoreStuff();
row.saveToDatabase();
私のモックでは、行のすべてを編集する順序は気にしませんが、保存した後でそれ以上何もしようとしないことが非常に重要です。これを行う良い方法はありますか?
私はverifyNoMoreInteractionsを探していないことに注意してください。saveToDatabaseが最後に呼び出されたことを確認しません。また、明示的に検証していない行の何かを呼び出すと失敗します。私は次のようなことを言うことができるようにしたいと思います:
verify(row).setSomething(value);
verify(row).setSomethingElse(anotherValue);
verifyTheLastThingCalledOn(row).saveToDatabase();
それが役に立ったら、私はこれを行ったJMockテストからMockitoに切り替えています:
row.expects(once()).method("saveToDatabase").id("save");
row.expects(never()).method(ANYTHING).after("save");