作为结果返回模拟方法的参数

Ara*_*yan 1 java junit mockito

最简单的例子:我有以下方法:

public String testMethod(String arg){
    .....
}
Run Code Online (Sandbox Code Playgroud)

我想模拟这个方法作为结果返回传递的参数.例如:

testMethod("aString") returns "aString"
testMethod("anotherString") returns "anotherString"
Run Code Online (Sandbox Code Playgroud)

我知道我可以硬编码这种行为,但我希望它是通用的.

Jea*_*art 5

你可以写自己的Answer:

when(mock.testMethod(anyString())).thenAnswer(new Answer<String>() {
    @Override
    public String answer(InvocationOnMock invocation) {
        return invocation.getArgumentAt(0, String.class);
    }
});
Run Code Online (Sandbox Code Playgroud)

要么:

when(mock.testMethod(anyString()))
    .thenAnswer(AdditionalAnswers.<String>returnsFirstArg());
Run Code Online (Sandbox Code Playgroud)