Ich hatte ein Problem mit Mocking Apache Http-Client. Der folgende Versuch, einen Mock zu erstellen:Warum verwendet mein Mockito Mock-Objekt real die Implementierung
Fehler beim Erstellen eines echten Schein. Die obige Zeile wird ohne Ausnahmen ausgeführt, aber wenn ich versuche, ein bestimmtes Verhalten Stummel:
Mockito.when(httpClient.execute(Mockito.<HttpUriRequest>anyObject())).thenReturn(null);
Ich erhalte eine Ausnahme von einer Methode in AbstractHttpClient:
Exception in thread "main" java.lang.IllegalArgumentException: Request must not be null.
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:572)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
Warum der Anruf innerhalb Mockito auszuführen ist. wenn an AbstractHttpClient übergeben?
Ich habe eine Lösung für dieses spezielle Problem gefunden: Verwenden Sie die Schnittstelle HttpClient, anstatt zu versuchen, die konkrete Unterklasse zu verhöhnen. Dies ist eine viel bessere Lösung in diesem Fall, aber ich frage mich allgemein, was hier vor sich geht? Warum kann ich diese konkrete Klasse nicht richtig mit Mockito verspotten? Gibt es etwas Besonderes an DefaultHttpClient? Gibt es andere Fälle, wo Mockito konkrete Klassen nicht verspotten kann?
Ich bin mit Mockito 1.8.5, Apache Httpclient 4.0.3, Apache HTTP-Kern 4.1, JDK 1.6.0 auf OSX
Das war's, danke! – auramo