我如何使一个方法返回传递给它的参数?

问题:

考虑一个方法签名,如:

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有一个更简单的方法,使用returnsFirstArg()方法而不是Answer对象(感谢@David Wallace提到它):
 when(myMock.myFunction(anyString())).then(returnsFirstArg());

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How can I make a method return an argument that was passed to it?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 71 = 76