Mockito を使用してビジネス オブジェクトの単体テストを行っています。ビジネス オブジェクトは、通常は DB からデータを取得する DAO を使用します。ビジネス オブジェクトをテストするには、別のメモリ内 DAO (データを HashMap に保持する) を使用する方が、すべてのオブジェクトを記述するよりも簡単であることに気付きました。
when(...).thenReturn(...)
ステートメント。このような DAO を作成するために、次のように DAO インターフェースを部分的にモックすることから始めました。
when(daoMock.getById(anyInt())).then(new Answer() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
int id = (Integer) invocation.getArguments()[0];
return map.get(id);
}
});
しかし、Mockito を使用せずに(インメモリ HashMap を使用して)まったく新しい DAO 実装を自分で実装し(その InvocationOnMock オブジェクトから引数を取得する必要はありません)、テストされたビジネス オブジェクトにこの新しいダオ。
さらに、部分的なモックは悪い習慣と見なされていることを読みました。私の質問は次のとおりです。私の場合、私が行っていることは悪い習慣ですか? 欠点は何ですか?私にはこれで問題ないように思えますが、潜在的な問題が何であるか疑問に思っています。