Mockito を使用して、いくつかのレガシー コードをテストしようとしています。
FooDao
次のように本番環境で使用されるスタブを作成します。
foo = fooDao.getBar(new Bazoo());
次のように書くことができます:
when(fooDao.getBar(new Bazoo())).thenReturn(myFoo);
しかし、明らかな問題は、メソッドをスタブしたgetBar()
同じオブジェクトでは決して呼び出されないということです。(その演算子は呪われます!)Bazoo
new
引数に関係なく返されるような方法でメソッドをスタブ化できればいいのですがmyFoo
。それができない場合は、他の回避策の提案に耳を傾けますが、適切なテスト カバレッジが得られるまで、実稼働コードの変更は避けたいと思います。
ベストアンサー1
when(
fooDao.getBar(
any(Bazoo.class)
)
).thenReturn(myFoo);
または(sを避けるためnull
):
when(
fooDao.getBar(
(Bazoo)notNull()
)
).thenReturn(myFoo);
マッチャーをインポートすることを忘れないでください (他にも多数あります):
Mockito 2.1.0以降の場合:
import static org.mockito.ArgumentMatchers.*;
古いバージョンの場合:
import static org.mockito.Matchers.*;