I try to use MockWebServer to the various responses to my API. I have made a simple example just to try that what I would like to do is a working method.
Isn't the mockWebServer meant to 'mock' the endpoint of my http connections? Like a real server? Whenever I try to make a call I got UnknownHostException.
Am I using it wrong? Isn't it supposed to just replace a server's response? (mock it)
E D I T:
I have internet permission in manifest.
I use:
androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.9.1'
Code:
@Test
public void myTest() throws IOException, InterruptedException {
String url = "http://some-mock-url.com";
MockWebServer server = new MockWebServer();
server.enqueue(new MockResponse().setBody("Something not valid JSON response"));
server.start();
server.url(url);
final CountDownLatch signal = new CountDownLatch(1);
AndroidNetworking.get(url)
.addQueryParameter("some_key", "some_value12345")
.addHeaders("token", "token_1231234")
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
signal.countDown();
Log.i("Response", "jsonObject: " + response);
}
@Override
public void onError(ANError anError) {
signal.countDown();
Log.i("Response", "error: " + anError.getMessage());
}
}
);
signal.await();
}
Logcat:
com.androidnetworking.error.ANError: java.net.UnknownHostException: Unable to resolve host "some-mock-url.com": No address associated with hostname
I have found an example when the order is reversed.
So instead of setting an URL to the Mock server, you have to set the Mock server's url to the actual URL, so like:
myAPIsURL= mockWebServer.url("/").toString();
And not
mockWebServer.url(myAPIsURL);