I am trying to test this method.
@Override public JSON connectResource() throws IOException { //get the location and credentials for the certificates System.setProperty("javax.net.ssl.trustStore", "C:/Program Files/Java/jdk1.7.0_40/jre/lib/security/cacerts"); System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); HttpRequest httpRequest = new HttpGet(url); System.out.println("hello"); httpRequest.addHeader("Accept", "application/json"); HttpResponse response = httpClient.execute((HttpUriRequest) httpRequest); System.out.println("hello1"); HttpEntity httpEntity = response.getEntity(); String data = this.getData(httpEntity); return JSONSerializer.toJSON(data.toString()); } My set up method is:
@Before public void setUp() throws Exception{ mockHttpClient = mock(DefaultHttpClient.class); mockHttpRequest = mock(HttpUriRequest.class); mockHttpResponse = mock(BasicHttpResponse.class); mockHttpEntity = mock(HttpEntity.class); mockInputStream = mock(InputStream.class); mockInputStreamReader = mock(InputStreamReader.class); mockBufferedReader = mock(BufferedReader.class); mockHttpGet = mock(HttpGet.class); mockHttpRequestBase = mock(HttpRequestBase.class); //when(mockHttpClient.execute(Mockito.isA(HttpUriRequest.class))).thenReturn(mockHttpResponse); //when(mockHttpClient.execute(mockHttpRequest)).thenReturn(mockHttpResponse); //when(mockHttpClient.execute(mockHttpRequestBase)).thenReturn(mockHttpResponse); //when(mockHttpClient.execute(mockHttpGet)).thenReturn(mockHttpResponse); when(mockHttpResponse.getEntity()).thenReturn(mockHttpEntity); when(mockHttpEntity.getContent()).thenReturn(mockInputStream); PowerMockito.whenNew(InputStreamReader.class) .withArguments(mockInputStream).thenReturn(mockInputStreamReader); PowerMockito.whenNew(BufferedReader.class) .withArguments(mockInputStreamReader).thenReturn(mockBufferedReader); PowerMockito.when(mockBufferedReader.readLine()) .thenReturn(JSON_STRING) .thenReturn(null); PowerMockito.whenNew(HttpGet.class).withArguments(VALID_URL) .thenReturn(mockHttpGet); } And my test case is :
@Test public void testConnectResource() throws IOException { when(mockHttpClient.execute(mockHttpGet)).thenReturn(mockHttpResponse); HttpConnectGithub connHandle = new HttpConnectGithub(VALID_URL); JSON jsonObject = connHandle.connectResource(); System.out.println(jsonObject); //assertThat(jsonObject, instanceOf(JSON.class)); } However, the execution stops at
HttpResponse response = httpClient.execute((HttpUriRequest) httpRequest); you can see all that I tried in the comments of my set up method. Does anyone find an issue with anything? I debugged through my test case and all mock objects are properly initialized. I have tried exchanging HttpUriRequest and HttpRequest, HttpResponse and BasicHttpResponse etc but without much luck. Please guide on how to tackle this issue.