1. ホーム
  2. java

[解決済み] モックされたメソッドに渡された引数を返すようにする

2022-03-22 11:29:33

質問

のようなメソッドシグネチャを考えてみましょう。

public String myFunction(String abc);

Mockitoは、メソッドが受け取ったのと同じ文字列を返すのを助けることができますか?

どのように解決するのですか?

MockitoでAnswerを作成することができます。例えば、Applicationというインターフェースに、myFunctionというメソッドがあるとします。

public interface Application {
  public String myFunction(String abc);
}

以下は、Mockitoのアンサーを使ったテスト・メソッドです。

public void testMyFunction() throws Exception {
  Application mock = mock(Application.class);
  when(mock.myFunction(anyString())).thenAnswer(new Answer<String>() {
    @Override
    public String answer(InvocationOnMock invocation) throws Throwable {
      Object[] args = invocation.getArguments();
      return (String) args[0];
    }
  });

  assertEquals("someString",mock.myFunction("someString"));
  assertEquals("anotherString",mock.myFunction("anotherString"));
}

Mockito 1.9.5およびJava 8以降では、ラムダ式も使用可能です。

when(myMock.myFunction(anyString())).thenAnswer(i -> i.getArguments()[0]);