vendredi 29 mai 2015

Why isnt mockito injecting the right response?

I'm trying to use mockito in the following manner.

Here's a part of main class IClient.

public LoginResponse doLogin() {

        WebTarget target = buildTarget();

        MultivaluedMap<String, Object> authHeaders = prepareHeaders();
        Builder buildRequest = buildRequest(authHeaders,target); 
        Response loginRsp = buildRequest
                .post(Entity.entity(" Valid JSON string",
                        MediaType.APPLICATION_JSON_TYPE));
        if(loginRsp == null)
            LOGGER.error("Response was null");// Response is always returned as null.

Here's my test code

@Test
public void testdoLoginPass(){
        Response response = Response.ok().build();
        WebTarget webTarget = inner.buildTarget();
        Builder buildRequest = inner.buildRequest( getMockHeaders(),webTarget);

        when(buildRequest.post(Entity.entity(anyString(),
                MediaType.APPLICATION_JSON_TYPE))).thenReturn(response);
      Assert.assertNotNull(inner.doLogin());

}

I cant seem to figure out why the response is always null. Any thoughts would be greatly appreciated.

The inner is anonmyous inner class object provides corresponding mock values for buildTarget() and buildRequest(). I'm able to see that the right mock values are generated by debugging. Here is the anonymous inner class

inner= new IClient(client, propConfig){
            WebTarget buildTarget(){
                WebTarget target= mock(WebTarget.class);
                LOGGER.error("Returning mock");
                return target;

            }
          Builder buildRequest(final MultivaluedMap<String, Object>  Headers,WebTarget target){
              Builder builder = mock(Builder.class);
              LOGGER.error("Returning mock");
              return builder;
          }
        };

Aucun commentaire:

Enregistrer un commentaire