Ich versuche, einige Unit-Tests für einige Codezeilen zu schreiben, die Jersey verwenden, um einen RESTful-Webservice zu erreichen, und verwende Mockito, um einige Dinge zu mocken. Hier ist mein Code:
@Test
void test() {
gegeben:
// WebResource ist ein Jersey/JAX-RS-Konstrukt.
WebResource mockResource = Mockito.mock(WebResource)
// Address.groovy ist ein POJO aus meinem Projekt.
Address mockAddress = Mockito.mock(Address)
// DIE NÄCHSTE LINIE WIRFT DIE AUSNAHME AUS:
Mockito.when(mockResource.get(Mockito.any())).thenReturn(mockAddress)
wenn:
dann:
}
Wie Sie sehen können, versuche ich Jersey dazu zu bringen, meine mockAddress
-Instanz zurückzugeben, wenn der WebResource
einen HTTP GET durchführt.
Wenn dies ausgeführt wird, erhalte ich:
groovy.lang.GroovyRuntimeException: Mehrdeutige Methodenüberladung für Methode com.sun.jersey.api.client.WebResource$$EnhancerByMockitoWithCGLIB$$1c2e51fa#get.
Kann nicht auflösen, welche Methode für [null] aufgrund von überlappenden Prototypen zwischen bestimmt werden soll:
[class com.sun.jersey.api.client.GenericType]
[class java.lang.Class]
bei groovy.lang.MetaClassImpl.chooseMostSpecificParams(MetaClassImpl.java:3031)
bei groovy.lang.MetaClassImpl.chooseMethodInternal(MetaClassImpl.java:2983)
bei groovy.lang.MetaClassImpl.chooseMethod(MetaClassImpl.java:2926)
bei groovy.lang.MetaClassImpl.getMethodWithCachingInternal(MetaClassImpl.java:1203)
bei groovy.lang.MetaClassImpl.createPojoCallSite(MetaClassImpl.java:3130)
bei org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:129)
bei org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:163)
bei org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
bei org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
bei org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
bei com.me.myapp.MyUnitTest.test(MyUnitTest.groovy:19)
bei sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
bei sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
bei sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
bei org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
bei org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Wo MyUnitTest.groovy:19
die Zeile ist:
Mockito.when(mockResource.get(Mockito.any())).thenReturn(mockAddress)
Ideen, was los ist?