J'utilise souvent WireMock lorsque je veux effectuer un test simulé de l'autre partie. L'appariement des demandes peut également être effectué, ce qui est très pratique.
stubFor(post(urlEqualTo("/mockurl"))
.withRequestBody(equalToJson(REQUEST_JSON_STRING))
.willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json")
.withBody(RESPONSE_JSON_STRING)));
Si vous écrivez comme ci-dessus, RESPONSE_JSON_STRING
ne sera retourné que lorsqu'un message JSON correspondant à REQUEST_JSON_STRING
est accepté.
cependant,
--Si l'application émet une chaîne aléatoire
Il existe de nombreux éléments difficiles à assortir.
{
"token": "uPx2bB9"
"accept_date": "2018-01-01T00:00:00.000Z",
}
De plus, si vous voulez lire REQUEST_JSON_STRING
à partir d'un fichier, vous ne voulez pas préparer autant de fichiers qu'il y a d'éléments variables.
Dans un tel cas, ajoutez un argument à ʻequalToJson`.
StringValuePattern com.github.tomakehurst.wiremock.client.WireMock.equalToJson(String value, boolean ignoreArrayOrder, boolean ignoreExtraElements)
En définissant ʻignoreExtraElements = true, les éléments qui n'existent pas dans
value` seront ignorés.
stubFor(post(urlEqualTo("/mockurl"))
.withRequestBody(equalToJson(REQUEST_JSON_STRING, true, true))
.willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json")
.withBody(RESPONSE_JSON_STRING)));
Si vous le définissez comme ci-dessus,
REQUEST_JSON_STRING
:
{
"name": "hoge",
"data": {
"value": 1000
}
}
Demande réelle:
{
"name": "hoge",
"data": {
"token": "uPx2bB9",
"id": "abcde",
"value": 1000
}
}
Mais la correspondance est réussie (les éléments token
et ʻidsont ignorés). Vous pouvez également utiliser
matchingJsonPath` pour valider les éléments ignorés.
StringValuePattern com.github.tomakehurst.wiremock.client.WireMock.matchingJsonPath(String value)
Si vous souhaitez vérifier que l'élément existe (Lorsque l'heure actuelle ou une chaîne de caractères aléatoires est émise par l'application et qu'il est difficile de comparer)
stubFor(post(urlEqualTo("/mockurl"))
.withRequestBody(equalToJson(REQUEST_JSON_STRING, true, true))
.withRequestBody(matchingJsonPath("$.data.token")) // "token"Vérifiez qu'il y a un élément
.willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json")
.withBody(RESPONSE_JSON_STRING)));
Si vous souhaitez également vérifier la valeur d'un élément (Par exemple, lorsque vous souhaitez vérifier des éléments variables en fonction des données de test)
stubFor(post(urlEqualTo("/mockurl"))
.withRequestBody(equalToJson(REQUEST_JSON_STRING, true, true))
.withRequestBody(matchingJsonPath("$.data[?(@.id == 'abcde')]")) // "id"Validez la valeur de
.willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json")
.withBody(RESPONSE_JSON_STRING)));
Recommended Posts