如何修复Mockito无效使用参数匹配器错误

t3irkdon  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(202)

我试图使用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。

fykwrbwg

fykwrbwg1#

https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/InjectMocks.html
同样,请注意,@InjectMocks将只注入使用@Spy或@Mock注解创建的mock/spies。
因此,您的代码应该如下所示:

@Mock
ExtensionWebClientUtil extensionWebClientUtil;

@InjectMocks
CPEServiceInvokerImpl cPEServiceInvokerImpl;

...

Mockito.when(extensionWebClientUtil.postXMLExchange(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(),
                Mockito.anyString())).thenReturn(Mockito.any());

相关问题