'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