'Ambiguous Mockito - 0 Matchers Expected, 1 Recorded (InvalidUseOfMatchersException)
i'm facing a very strange problem.
URL = "/my/specific/url/";
when(this.restHelperMock.post(
eq(myEnum),
eq(this.config.apiEndpoint() + URL),
any(JSONObject.class))).thenReturn(new JSONObject(myDesiredJsonContent));
or even with contains
URL = "/my/specific/url/";
when(this.restHelperMock.post(
eq(myEnum),
contains(this.config.apiEndpoint() + URL),
any(JSONObject.class))).thenReturn(new JSONObject(myDesiredJsonContent));
gives me
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
0 matchers expected, 1 recorded:
This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));
For more info see javadoc for Matchers class.
Even if I don't use RAW expressions.
Strangely if I change the contains method to:
URL = "/my/specific/url/";
when(this.restHelperMock.post(
eq(myEnum),
contains(URL),
any(JSONObject.class))).thenReturn(new JSONObject(myDesiredJsonContent));
omitting the endpoint, it works.
The Config and RestHelper are both mocked:
this.restHelperMock = mock(RESTHelper.class);
this.config = mock(MyConfiguration.class);
when(this.config.apiEndpoint()).thenReturn("http://host:port/api");
The URL with ApiEndpoint is equal to what I wanted to mock, even if it wouldn't be, I should get a NullpointerException, because of false mocking. But here I don't have any ideea.
Thank you for your answers.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
