私は Mockito を初めて使用し、大規模なリファクタリングを開始する前にいくつかのレガシー コードのテストを作成しようとしていますが、コード ベースで定期的に見られると予想される次のパターンに遭遇しました。
...
Foo foo = new Foo(bar, baz);
foo = db.persist(foo); // Save an object to the DB and have the id set
FooTO fooTO = convert(FooTO.class, foo); // Turn foo entity into a foo Transfer Object
Response response = createdResponse(fooTO, foo.getId()); // Prepare a 201 response
return response;
私が直面している問題は、db.persist() への通常の呼び出しで、foo エンティティ オブジェクトを正常に永続化した後に ID が設定されることです。しかし、テストではそのフィールドは null であり、createdResponse 呼び出しで NPE を取得することになります。
私はすでにテストで以下を使用しています:
Db db = Mockito.mock(Db.class);
when(db.persist(any(Foo.class))).then(returnsFirstArg());
しかし、返される前に、その foo 引数で setId(100) などを呼び出すことができるようにしたいと考えています。
これにアプローチする方法についての洞察を持っている人はいますか?
代わりに、createdResponse への呼び出しを偽装する必要がありますか?