[JAVA] Lancer un serveur stub avec WireMock

Le serveur stub de WireMock est une API qui amène la communication HTTP à simuler le port de destination et à renvoyer la valeur de retour attendue.

--Environnement - Java1.8 --Série Spring Boot 2 --WireMock série 2

Si vous en faites un


@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
système public vide normal() {
    stubFor(get(urlEqualTo("/hoge"))
      .willReturn(aResponse()
        .withStatus(200)
        .withBodyFile("hoge.json")))

    //Tester le contenu...

  }
}

hoge.json


{
  "text": "hogehoge"
}

En bref, un serveur stub qui renvoie l'état 200 et hogehoge lors de l'accès à / hoge démarrera sur le port 8081. En guise de mise en garde, c'est l'endroit où mettre hoge.json. src/functionalTest/resources/__files/hoge.json
est. J'ai oublié ces __files et je suis devenu accro pendant une heure.

Lorsque vous en faites plus d'un

Je vais mettre le code en premier.


@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
système public vide normal() {

    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())
    );

    //Tester le contenu...

  }
}

Comme vous pouvez le voir, si vous envoyez fugafuga à / fuga par la poste, vous pouvez ajouter un stub qui ne renvoie que le 200e statut. En guise d'avantage, les vérifications, etc. sont préparées pour chaque règle, vous pouvez donc tester quelle requête POST de quel stub a été appelé et combien de fois.

Recommended Posts

Lancer un serveur stub avec WireMock
Ecrire un serveur réactif avec Micronaut
Créer un serveur API Web avec Spring Boot
Configurer un serveur virtuel Cent OS avec Vagrant
Lancez MariaDB avec Docker
[Rails] Lancer un nouveau projet
Créez un terrain de jeu avec Xcode 12
Une histoire bloquée avec NotSerializableException
Implémentez un serveur API Web REST simple avec Spring Boot + MySQL
Créez un serveur Web simple avec la bibliothèque standard Java com.sun.net.httpserver
Une histoire sur la connexion à un serveur CentOS 8 avec un ancien Ansible