是否有可能“获取”通过Mockito.when使用的参数?

时间:2011-11-01 16:04:15

标签: java mocking mockito

使用Mockito时,是否可以获取/存储使用的参数?

例如这个伪代码:

Mockito.when(mock.someMethod(**any string**)).thenReturn(print(** any string **));

打印将是:

public void print(String s) {
    System.out.println(s);
}

可以这样使用:

Person mockPerson = ...

mockPerson.setName("John");

这将触发'John'将被打印出来。

也许是一个蹩脚的例子,但我想“存储”/“使用”模拟方法将被调用的任何参数。

后续问题:如果没有,那么其他测试框架可以做到这一点。

2 个答案:

答案 0 :(得分:2)

ArgumentCaptor文档对您来说很有意思。

答案 1 :(得分:1)

这就是你要找的东西。创建使用调用目标的自定义答案。

 when(mock.someMethod(10)).thenAnswer(new Answer<Integer>() {
 public Integer answer(InvocationOnMock invocation) throws Throwable {
     return (Integer) invocation.getArguments()[0];
 }

}

链接到Mockito文档:http://docs.mockito.googlecode.com/hg/latest/org/mockito/stubbing/OngoingStubbing.html#then%28org.mockito.stubbing.Answer%29