Mockito を使用した Void メソッドのモック
オブザーバー パターンを扱う場合、戻り値の型が void のメソッドをモックすると課題が発生する可能性があります。そのようなケースの 1 つは、 void を返す addListener のようなメソッドを使用してクラスをモックする際に困難に遭遇することです。
戻り値のないメソッドをモックするために、Mockito はメソッドのセットを提供しています: doThrow()、doAnswer()、 doNothing() および doReturn()。これらのメソッドを使用すると、モックされたメソッドの動作を指定できます。
たとえば、addListener メソッドが呼び出されたときに例外をスローするように指定するには、以下を使用できます。
Mockito.doThrow(new Exception()).when(instance).addListener(any(Listener.class));
または、次のようにします。複数の動作を連鎖させることができます。たとえば、次のコードは addListener への最初の呼び出しで例外をスローし、その後の呼び出しでは何も行いません。
Mockito.doThrow(new Exception()).doNothing().when(instance).addListener(any(Listener.class));
提供された World クラスでは、次のように doAnswer メソッドを使用して setState メソッドをモックできます。以下に示す:
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());
以上がMockito で Void メソッドをモックする方法: doThrow、doAnswer、doNothing、および doReturn のガイド?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。