Maquette Maillot Client Demande de réponse à l'aide de Mockito et Junit

J'ai cherché sur le forum et essayé d'obtenir de la tête, de l'expérimentation de ce que les autres ont déjà mentionné dans d'autres postes, mais rien n'a fonctionné pour moi, puisque je suis nouveau sur mockito junit, d'où l'affichage de cette question.

J'ai un client rest , qui appelle de Repos webservice :-

//Rest Client code
public static String getProcessString(String url) {
Client client = Client.create();
com.sun.jersey.api.client.WebResource webResource = client.resource(url);
webResource.accept("application/json");
/*if (response.getStatus() != 200) {
       throw new RuntimeException("Failed : HTTP error code : "
        + response.getStatus());
    }*/
String process = webResource.get(String.class);

return process;

}

Mon plan est l'unité de test getProcessString(String url) de la méthode. Mon RestClientUnitTest.java le code est indiqué ci-dessous:-

package......service.workflow.client;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
@RunWith(MockitoJUnitRunner.class)
public class RestClientUnitTest {
@InjectMocks
private  RestClient  RestClient = new  RestClient();
@Mock
private com.sun.jersey.api.client.WebResource res;
@Mock
private Client client;
private String URL = "http://localhost:9095/jersey/recoveryservice/fetchUpdateProcesses?oldProcessDefinitionId=maker_checker&newProcessDefinitionId=maker_checker_v1";
@Before
public void setUp() throws Exception {
Client mockClient = Client.create();
doReturn(mockClient).when(client).create();
//WebResource webResource = mockClient.resource(URL);
doReturn(webResource).when(mockClient).resource(URL);
//when(mockClient.resource(URL)).thenReturn(res);
doReturn("OK").when(res).get((Class<String>) any());
//when(webResource.get((Class<String>) any())).thenReturn("OK");
}
@Test
public void testgetProcessString() {
Assert.assertEquals(RestClient.getProcessString("http://localhost:9095/jersey/recoveryservice/fetchUpdateProcesses?oldProcessDefinitionId=maker_checker&newProcessDefinitionId=maker_checker_v1"), "OK");
/*Client client = Client.create();
com.sun.jersey.api.client.WebResource webResource = client.resource(url);
webResource.accept("application/json");
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
String process = webResource.get(String.class);
return process;*/
}
}

Cependant mon test unitaire est en situation d'échec :-
doReturn(webResource).quand(mockClient).ressource(URL);
trace de l'erreur est :-

 org.mockito.exceptions.misusing.UnfinishedStubbingException: 
Unfinished stubbing detected here:
-> at .......service.workflow.client.RestClientUnitTest.setUp(RestClientUnitTest.java:35)
E.g. thenReturn() may be missing.
Examples of correct stubbing:
when(mock.isOk()).thenReturn(true);
when(mock.isOk()).thenThrow(exception);
doThrow(exception).when(mock).someVoidMethod();
Hints:
1. missing thenReturn()
2. although stubbed methods may return mocks, you cannot inline mock creation (mock()) call inside a thenReturn method (see issue 53)
at ......service.workflow.client.RestClientUnitTest.setUp(RestClientUnitTest.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37)
at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Vous ne savez pas ce qui me manque ici? Toutes les idées et suggestions seront appréciées

Après quelques analyses, modifié le code dans la méthode setUp() comme :-

    Client mockClient =Client.create();
//WebResource mockWebResource = Mockito.mock(WebResource.class);
//when(client.create()).thenReturn(mockClient);
doReturn(mockClient).when(client).create();
res = mockClient.resource(URL);
when(res.get((Class<String>) any())).thenReturn("OK"); ---> Error
//stub(res.get((Class<String>) any())).toReturn("OK");

Donc pas plus d'arriver le plus tôt exception, mais maintenant il semble tenter de se connecter à l'URL pour webResource.get() et en lui donnant d'erreur ci-dessous:-

  com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:148)
at com.sun.jersey.api.client.Client.handle(Client.java:642)
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:601)
at com.sun.jersey.api.client.WebResource.get(WebResource.java:187)
at ........service.workflow.client.RestClientUnitTest.setUp(RestClientUnitTest.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
InformationsquelleAutor kunal | 2014-01-18