我试图在 RestTemplate 响应中模拟一个字符串,但我在代码中遇到了以下错误。请提供意见。
错误:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Misplaced argument matcher detected here:
You cannot use argument matchers outside of verification or stubbing.
Examples of correct usage of argument matchers:
when(mock.get(anyInt())).thenReturn(null);
doThrow(new RuntimeException()).when(mock).someVoidMethod(anyObject());
verify(mock).someMethod(contains("foo"))
Also, this error might show up because you use argument matchers with methods that cannot be mocked.
Following methods *cannot* be stubbed/verified: final/private/equals()/hashCode().
Mocking methods declared on non-public parent classes is not supported.
上述错误发生在以下行中:
以下行代码中的错误:
when(this.userProfileClientRestTemplateProvider.currentUserProfileWithPermissionsRestTemplate()
.exchange(
any(RequestEntity.class),eq(String.class))) .thenReturn(mockResponseEntityFromFile("com/cnanational/dealerplanadmin/service/applyRuleSetsToDealer/user-permissions.json",
String.class, ResponseEntity.ok()));
错误消息指示您在模拟对象之外使用了一些模拟匹配器,如any(Object)
或anyString()
。
(大多数情况下,您希望模拟首先倾向于使用匹配器参数的对象(,要么放置一个固定值而不是匹配器。
此错误消息的另一种可能性是,如果您尝试模拟final
方法。
有关更详细的答案,我们需要查看您的代码。
请告诉我们我们是否可以为您提供帮助或提供更多信息来帮助我们解决您的问题。