0

我知道在这个平台上被多次询问过。我还检查了使用所有原始参数或所有 Matcher 参数的解决方案。在我的情况下,Argument Matcher(any, anyString) 已用于所有参数,但仍然出现错误。

代码:

Mockito.when(service.createReq(Mockito.any(RequestDto.class))).thenReturn(Mockito.any(TermReq.class));
Mockito.when(utils.sendPOSTRequest(Mockito.anyString(),Mockito.anyString())).thenReturn(Mockito.anyString());

上一行的错误是:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
2 matchers expected, 3 recorded:

有人可以指出可能是什么问题。

谢谢,

4

2 回答 2

1

您不能从像thenReturn(Mockito.any(TermReq.class)). 这是无效的使用。

您应该返回一个实际值或一个参数捕获器。

于 2020-05-30T07:13:50.867 回答
0

如果你想模拟一个方法的返回值,你应该决定在 when 子句之后返回什么对象。您不能返回新的参数匹配器。我建议在您的测试场景中返回新的模拟对象,如下所示:

TermReq termReq = Mockito.mock(TermReq.class);  // create mock
Mockito.when(termReq.getId()).thenReturn(1L) // mock required get methods
Mockito.when(service.createReq(Mockito.any(RequestDto.class))).thenReturn(termReq); // then return in case of the service method call

通过这种使用方式,您可以处理或将结果与模拟对象进行比较。

于 2020-05-30T09:01:43.547 回答