我正在使用 Mockito 并想做一些类似的事情:
Mockito.doReturn(new MyObject(capturedParameter))
. when(mockedCreatorInstance).findByParameter(anyString())
所以当有人调用方法mockedCreatorInstance.findByParameter("XXXX")
时,返回的值将是 new MyObject("XXXX")
.
如您所见,mockedCreatorInstance
的模拟方法签名,将是
MyObject findByParameter(String parameter);
我尝试使用 ArgumentCaptor<String>
进行一些操作但失败了。
我应该怎么做才能让它发挥作用?
最佳答案
Mockito 文档建议在 stub 而不是验证时不要使用 ArgumentCaptor<>。
我相信您可以通过以下答案实现您想要的目标:
when(mockedCreatorInstance.findByParameter(anyString()))
.thenAnswer(new Answer<MyObject>() {
public MyObject answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
return new MyObject((String) args[0]);
}});
关于java - Mockito:如何使用模拟函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44338384/