2010-10-08 9 views
0

Ceci est mon code (Jersey 1.4 + Mockito 1.8.5):Je suis en train de se moquer de Jersey WebResource avec Mockito, et ne peut pas le faire

import org.junit.Test; 
import static org.junit.Assert.*; 
import com.sun.jersey.api.client.WebResource; 
import static org.mockito.Mockito.*; 
public FooTest { 
    @Test public shouldMakeAHttpCall() { 
    WebResource wr = mock(WebResource.class); 
    doReturn(wr).when(wr).accept(anyVararg()); 
    doReturn("some text").when(wr).get(String.class); 
    } 
} 

compilateur dit:

cannot find symbol: method accept(java.lang.Object) 
location: class com.sun.jersey.api.client.WebResource 

Il y a quelque chose mal avec anyVargarg(), mais quoi exactement?

+6

Il n'y aura pas moqueuse de Jersey. MTV a déjà pris soin de cela pour nous. – wheaties

+0

Notez que WebResource.accept ne renvoie pas un objet WebResource, il renvoie un WebResource.Builder. Je suis d'accord avec vous que anyVargarg() est le problème cependant. – gmoore

Répondre

2

C'est la solution:

doReturn(wr).when(wr).accept((MediaType) anyVararg()); 
+0

La distribution était la clé. Même s'il semble anormal de lancer comme ça. Je vous remercie. – lvictorino

0

Avez-vous essayé:

WebResource wr = mock(WebResource.class); 
when(wr.accept(anyObject())).thenReturn(wr); 
when(wr.get(anyString()).thenReturn("some text"); 
+0

Oui, la même histoire, le même message de compilation ... – yegor256

+0

Peut-être essayer anyObject() au lieu de anyVararg(). Juste édité la réponse. – amorfis