Hi I have a method that takes an URL as an input and determines if it is reachable. Heres the code for that:
public static boolean isUrlAccessible(final String urlToValidate) throws WAGNetworkException {
URL url = null;
HttpURLConnection huc = null;
int responseCode = -1;
try {
url = new URL(urlToValidate);
huc = (HttpURLConnection) url.openConnection();
huc.setRequestMethod("HEAD");
huc.connect();
responseCode = huc.getResponseCode();
} catch (final UnknownHostException e) {
throw new WAGNetworkException(WAGConstants.INTERNET_CONNECTION_EXCEPTION);
} catch (IOException e) {
throw new WAGNetworkException(WAGConstants.INVALID_URL_EXCEPTION);
} finally {
if (huc != null) {
huc.disconnect();
}
}
return responseCode == 200;
}
I want to unit test the isUrlAccessible() method using PowerMockito
. I feel that I will need to use whenNew()
to mock the creation of URL
and the when url.openConnection()
is called, return another mock HttpURLConnection
object. But I have am not sure how to implement this? Am I on the right track? Can anyone help me in implementing this?
Found the solution. First mock the URL class, then Mock the HttpURLConnection and when url.openconnection() is called, return this mocked HttpURLConnection object and finally set its response code to 200. Heres the code:
In order to mock java.net.URL class through
mockito
library, you need to perform the following steps:mock-maker-inline
text into the file.code:
You can mock new Url instance with
Make sure you return a previously created mock object from that whenNew call.
Then you can add behavior to your mock as you want.