[JAVA] Starten Sie einen Stub-Server mit WireMock

Der Stub-Server von WireMock ist eine API, die bewirkt, dass die HTTP-Kommunikation den Zielport verspottet und den erwarteten Rückgabewert zurückgibt.

--Umgebung - Java1.8 --Spring Boot 2 Serie --WireMock 2 Serie

Wenn du eins machst


@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class FunctionalTest {

  @ClassRule
  public static WireMockRule wireMockRule =
    new WireMockRule(wireMockConfig().port(8081)
      .usingFilesUnderDirectory("src/functionalTest/resources/"));

  @Test
öffentliches nichtiges normales System() {
    stubFor(get(urlEqualTo("/hoge"))
      .willReturn(aResponse()
        .withStatus(200)
        .withBodyFile("hoge.json")))

    //Inhalt testen...

  }
}

hoge.json


{
  "text": "hogehoge"
}

Kurz gesagt, ein Stub-Server, der beim Zugriff auf / hoge den Status 200 und hogehoge zurückgibt, wird an Port 8081 gestartet. Notieren Sie den Speicherort von hoge.json. src/functionalTest/resources/__files/hoge.json
ist. Ich habe diese __files vergessen und war eine Stunde lang süchtig.

Wenn Sie mehr als eine machen

Ich werde den Code zuerst setzen.


@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class FunctionalTest {

  @Rule
  public WireMockRule wireMockRuleHoge =
    new WireMockRule(wireMockConfig().port(8081)
      .usingFilesUnderDirectory("src/functionalTest/resources/"));

  @Rule
  public WireMockRule wireMockRuleFuga =
    new WireMockRule(wireMockConfig().port(8082)
      .usingFilesUnderDirectory("src/functionalTest/resources/"));

  @Test
öffentliches nichtiges normales System() {

    wireMockRuleHoge.stubFor(get(urlEqualTo("/hoge"))
      .willReturn(aResponse()
        .withStatus(200)
        .withBodyFile("hoge.json")
      )
    );

    Resource requestResource = resourceLoader.getResource(ResourceLoader.CLASSPATH_URL_PREFIX + "/fuga.json");
    String request = FileUtils.readFileToString(requestResourcePerformance.getFile(), UTF_8);  
    wireMockRuleFuga.stubFor(post(urlEqualTo("/fuga"))
      .withRequestBody(equalToJson())
      .willReturn(ok())
    );

    //Inhalt testen...

  }
}

Wie Sie sehen können, können Sie, wenn Sie Fugafuga per Post an / fuga senden, einen Stub hinzufügen, der nur den 200. Status zurückgibt. Als Vorteil werden für jede Regel Überprüfungen usw. vorbereitet, sodass Sie testen können, welche POST-Anforderung von welchem Stub wie oft aufgerufen wurde.

Recommended Posts

Starten Sie einen Stub-Server mit WireMock
Schreiben Sie einen reaktiven Server mit Micronaut
Erstellen Sie einen Web-API-Server mit Spring Boot
Richten Sie mit Vagrant einen virtuellen Cent OS-Server ein
Starten Sie MariaDB mit Docker
[Rails] Starten Sie ein neues Projekt
Erstellen Sie einen Spielplatz mit Xcode 12
Eine Geschichte, die bei NotSerializableException steckt
Implementieren Sie einen einfachen Web-REST-API-Server mit Spring Boot + MySQL
Erstellen Sie einen einfachen Webserver mit der Java-Standardbibliothek com.sun.net.httpserver
Eine Geschichte über die Verbindung zu einem CentOS 8-Server mit einem alten Ansible