Mockito の doReturn() と when() の違いを理解する
Spring MVC アプリケーションの開発中に、サービス層を模擬するための Mockito の使用オブジェクトは一般的な方法です。 Mockito の機能を調べていると、 doReturn(...).when(...) と when(...).thenReturn(...) の両方が同じ機能を実行しているように見えることが明らかになります。ここで疑問が生じます: これら 2 つのメソッドには違いはありますか?
doReturn() と when() の重要な違いは、モック (@ の注釈が付けられた) の代わりにスパイされたオブジェクト (@Spy の注釈が付けられた) を使用する場合に明らかになります。 Mock).
doReturn() と Spied の when() の比較Objects
例
次のコードを考えてみましょう:
public class MyClass { protected String methodToBeTested() { return anotherMethodInClass(); } protected String anotherMethodInClass() { throw new NullPointerException(); } }
テスト ケース:
@Spy private MyClass myClass; // Works fine, does not invoke anotherMethodInClass() doReturn("test").when(myClass).anotherMethodInClass(); // Throws NullPointerException because anotherMethodInClass() is invoked when(myClass.anotherMethodInClass()).thenReturn("test");
要約すると、スパイされたオブジェクトを使用する場合、doReturn()メソッドの実行をスキップして戻り値を直接設定できますが、 when() は目的の値を返す前に実際のメソッドを呼び出します。 Mockito でスパイ対象オブジェクトを操作する場合、この理解は非常に重要です。
以上がMockito の doReturn() と when(): スパイされたオブジェクトを使用するときの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。