我试图使用Mockito来模拟一个方法,但是,我总是遇到错误。
@运行方式(MockitoJUnitRunner.class)类的CPEServiceInvokerImplNewTests {
@InjectMocks
CPEServiceInvokerImpl cPEServiceInvokerImpl;
然后我用这个Mockito呼叫-
ExtensionWebClientUtil extensionWebClientUtil = Mockito.mock(ExtensionWebClientUtil.class);
Mockito.when(extensionWebClientUtil.postXMLExchange(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(),
Mockito.anyString())).thenReturn(Mockito.any());
试图嘲笑这种方法-
public ResponseEntity<String> postXMLExchange(String restBaseUrl, String endPoint, String jsonBody, Boolean authTokenRequired,String subsKey) ;
我得到这个错误-
Exception in CPE response org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
5 matchers expected, 1 recorded:
-> at com.retail.store.basket.extn.service.CPEServiceInvokerImplNewTests.test_JUnit(CPEServiceInvokerImplNewTests.java:61)
如果匹配器与原始值组合,则可能发生此异常://不正确:“原始字符串”);使用匹配器时,所有参数都必须由匹配器提供。例如://正确的方法:someMethod(anyObject(),eq(“匹配器生成的字符串”));
有关详细信息,请参阅Matchers类的javadoc。
1条答案
按热度按时间fykwrbwg1#
https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/InjectMocks.html:
同样,请注意,@InjectMocks将只注入使用@Spy或@Mock注解创建的mock/spies。
因此,您的代码应该如下所示: