1. ホーム

[解決済み】Mockito - doReturn()とwhen()の相違点)

2022-04-03 18:13:47

質問

現在、Spring MVCアプリケーションで、Mockitoを使用してサービス層オブジェクトのモックを作成し、Controllerのメソッドをテストしているところです。しかし、Mockitoの仕様について読んでいるうちに、メソッド doReturn(...).when(...) と同等です。 when(...).thenReturn(...) . そこで質問なのですが、同じことをするメソッドが2つあることの意味は何でしょうか、それとも doReturn(...).when(...)when(...).thenReturn(...) ?

何かご助言があればお願いします。

解決方法は?

スタブに関する2つの構文はほぼ同等です。 ただし 常に 使用 doReturn/when はスタブ用ですが、場合によっては できない 使用 when/thenReturn . voidメソッドのスタブもその一つです。 その他にも、Mockitoのスパイを利用することや、同じメソッドを複数回スタブすることなどがあります。

ひとつは when/thenReturn が与えてくれるもの、それは doReturn/when これは、コンパイル時に返される値の型チェックを行うものです。 しかし、これはほとんど意味がないと思います。もし型が間違っていれば、テストを実行したときにすぐにわかります。

のみを使用することを強くお勧めします。 doReturn/when . 1つの構文で事足りるのに、2つの構文を学ぶ意味はない。

での私の回答を参照されたい。 Mockitoの文法を形成する。 - という質問に対する、より詳細な回答があります。