次のようなメソッド シグネチャを考えてみましょう。
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"));
}