Ich versuche, Wiremock, um eine 200-Status mit einer einfachen Anfrage in meinem Unit-Tests zurückzukehren, aber diese Einheit Test gibt immer einen Fehler 404 zurück.Wiremock Tests erhalten immer eine 404 auf einfache Anfrage
Wie kann das gelöst werden?
import static com.github.tomakehurst.wiremock.client.WireMock.*;
import static org.junit.Assert.assertTrue;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
import org.junit.Rule;
import org.junit.Test;
import java.net.HttpURLConnection;
import java.net.URL;
public class WiremockTest {
@Rule
public WireMockRule wireMockRule = new WireMockRule(8089); // No-args constructor defaults to port 8080
@Test
public void exampleTest() throws Exception {
stubFor(get(urlPathMatching("/my/resource[0-9]+"))
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "text/xml")
.withBody("<response>Some content</response>")));
int result = sendGet("http://localhost/my/resource/121");
assertTrue(200 == result);
//verify(getRequestedFor(urlMatching("/my/resource/[a-z0-9]+")));
}
private int sendGet(String url) throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// optional default is GET
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
return responseCode;
}
}
}
Wenn ich den Port auf 8089, funktioniert es gut. Für das Gesamtbild habe ich jedoch einen eingebetteten Tomcat Server, der während meiner Komponententests ausgeführt wird. Und wenn ich der Wiremock-Regel denselben Port wie dem Tomcat-Server gebe, erhalte ich einen verbindlichen Fehler, da der Port bereits vom Tomcat-Server verwendet wird. Gibt es eine Möglichkeit, dies für Anfragen in den Tomcat-Port zu arbeiten? – dwardu
Mit der Standard-Wiremock-Regel glaube ich nicht, dass das, was Sie fragen, im Kontext von Junit erledigt werden kann. Es kann andere Optionen geben, aber ich kenne diesen Kontext nicht wirklich. Mein bester Vorschlag wäre, die Dokumentation über das Drahtgeflecht durchzugehen und zu überprüfen, ob etwas zu Ihrem Anwendungsfall passt. http://wiremock.org/getting-started.html – Jeremiah