Mockito:如何使用模拟函数的参数?

时间:2017-06-02 22:43:06

标签: java mocking mockito

我使用Mockito并希望做类似的事情:

Mockito.doReturn(new MyObject(capturedParameter))
    . when(mockedCreatorInstance).findByParameter(anyString())

因此,当有人调用方法mockedCreatorInstance.findByParameter("XXXX")时,返回的值将为new MyObject("XXXX")

如您所见,mockedCreatorInstance的模拟方法签名将是

MyObject findByParameter(String parameter);

我使用ArgumentCaptor<String>尝试过但却失败了。

我该怎么做才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

Mockito文档建议在存根而不是验证时不要使用ArgumentCaptor&lt;&gt ;.

我相信你可以通过答案实现你想要的目标:

when(mockedCreatorInstance.findByParameter(anyString()))
    .thenAnswer(new Answer<MyObject>() {
        public MyObject answer(InvocationOnMock invocation) {
            Object[] args = invocation.getArguments();
            return new MyObject((String) args[0]);
        }});