モックメソッドに渡された引数を返すようにする 質問する

モックメソッドに渡された引数を返すようにする 質問する

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

public String myFunction(String abc);

Mockito は、メソッドが受け取ったのと同じ文字列を返すのに役立ちますか?

ベストアンサー1

Mockito 1.9.5以降およびJava 8以降

次のようにラムダ式を使用できます。

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

iのインスタンスはどこにありますかInvocationOnMock

旧バージョンの場合

Mockito で Answer を作成できます。メソッド myFunction を持つ MyInterface という名前のインターフェースがあると仮定します。

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

Mockito の回答を使用したテスト メソッドは次のとおりです。

public void testMyFunction() throws Exception {
    MyInterface mock = mock(MyInterface.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"));
}

おすすめ記事