org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 参数匹配器的使用无效!预期 2 个匹配器,记录 3 个
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 2 matchers expected, 3 recorded
我知道在这个平台上已经被问过多次了。我还检查了解决方案,前提是要么使用所有原始参数,要么使用所有 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:
谁能指出可能是什么问题。
谢谢,
您不能 return 来自模拟方法的参数匹配器,例如 thenReturn(Mockito.any(TermReq.class))
。这是无效的使用。
您应该 return 一个实际值或一个参数捕捉器。
如果你想模拟方法的 return 值,你应该决定什么对象将 return 在 when 子句之后。你不能 return 一个新的参数匹配器。我建议在您的测试场景中 return 新模拟对象,如下所示:
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
使用这种用法,您可以处理结果或将结果与模拟对象进行比较。
我知道在这个平台上已经被问过多次了。我还检查了解决方案,前提是要么使用所有原始参数,要么使用所有 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:
谁能指出可能是什么问题。
谢谢,
您不能 return 来自模拟方法的参数匹配器,例如 thenReturn(Mockito.any(TermReq.class))
。这是无效的使用。
您应该 return 一个实际值或一个参数捕捉器。
如果你想模拟方法的 return 值,你应该决定什么对象将 return 在 when 子句之后。你不能 return 一个新的参数匹配器。我建议在您的测试场景中 return 新模拟对象,如下所示:
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
使用这种用法,您可以处理结果或将结果与模拟对象进行比较。