ホームページ >Java >&#&チュートリアル >Mockito で Void メソッドを効果的にモックするにはどうすればよいですか?

Mockito で Void メソッドを効果的にモックするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-07 10:59:11527ブラウズ

How to Effectively Mock Void Methods in Mockito?

Mockito を使用した Void メソッドのモック

Observer パターンでは、オブザーバーは通常、戻り値の型が void のメソッドを定義します。 Mockito を使用してそのようなメソッドをモックしようとすると、課題が発生する可能性があります。

課題: 戻り値のないメソッドのモックは、自動的にはトリガーされません。その結果、状態変更またはメソッド呼び出しに関連するアサーションが単体テストで失敗する可能性があります。

解決策:

doThrow() を使用します。 doAnswer()、 Mockito の doNothing() または doReturn() メソッドを使用して、void メソッドの動作を操作します。

たとえば、メソッドの呼び出し時に例外をトリガーするには、次のようにします。

Mockito.doThrow(new Exception()).when(instance).methodName();

後続のアクションと組み合わせるには:

Mockito.doThrow(new Exception()).doNothing().when(instance).methodName();

提供されている例では、setState メソッドのモックは doAnswer メソッドを使用して実現できます。

World mockWorld = mock(World.class); 
doAnswer(new Answer<Void>() {
    public Void answer(InvocationOnMock invocation) {
      Object[] args = invocation.getArguments();
      System.out.println("called with arguments: " + Arrays.toString(args));
      return null;
    }
}).when(mockWorld).setState(anyString());

この手法を使用すると、void メソッドをモックし、期待値を設定し、アサーションを実行して単体テストでの動作を検証できます。

以上がMockito で Void メソッドを効果的にモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。