java – 使mocked方法返回传递给它的参数

考虑一个方法签名,如:

public String myFunction(String abc);

Mockito可以帮助返回方法收到的相同字符串吗?

解决方法:

您可以在Mockito中创建答案.让我们假设,我们有一个名为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开始,使用lambda函数有一种更简单的方法:

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

上一篇:java – @ Mock,@ MovieBean和Mockito.mock()之间的区别


下一篇:如何使用Mockito使mock变为void方法