Ich benutze WireMock oft, wenn ich einen verspotteten Test der anderen Partei durchführen möchte. Es kann auch ein Anforderungsabgleich durchgeführt werden, was sehr praktisch ist.
stubFor(post(urlEqualTo("/mockurl"))
.withRequestBody(equalToJson(REQUEST_JSON_STRING))
.willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json")
.withBody(RESPONSE_JSON_STRING)));
Wenn Sie wie oben schreiben, wird "RESPONSE_JSON_STRING" nur zurückgegeben, wenn eine JSON-Nachricht akzeptiert wird, die mit "REQUEST_JSON_STRING" übereinstimmt.
Jedoch,
Es gibt viele Gegenstände, die schwer zu finden sind.
{
"token": "uPx2bB9"
"accept_date": "2018-01-01T00:00:00.000Z",
}
Wenn Sie "REQUEST_JSON_STRING" aus einer Datei lesen möchten, möchten Sie auch nicht so viele Dateien vorbereiten, wie variable Elemente vorhanden sind.
Fügen Sie in einem solchen Fall ein Argument zu "gleichToJson" hinzu.
StringValuePattern com.github.tomakehurst.wiremock.client.WireMock.equalToJson(String value, boolean ignoreArrayOrder, boolean ignoreExtraElements)
Durch Setzen von "ignoreExtraElements = true" werden Elemente, die in "value" nicht vorhanden sind, ignoriert.
stubFor(post(urlEqualTo("/mockurl"))
.withRequestBody(equalToJson(REQUEST_JSON_STRING, true, true))
.willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json")
.withBody(RESPONSE_JSON_STRING)));
Wenn Sie es wie oben einstellen,
REQUEST_JSON_STRING
:
{
"name": "hoge",
"data": {
"value": 1000
}
}
Tatsächliche Anfrage:
{
"name": "hoge",
"data": {
"token": "uPx2bB9",
"id": "abcde",
"value": 1000
}
}
Das Match ist jedoch erfolgreich (die Elemente "Token" und "ID" werden ignoriert). Sie können auch "matchingJsonPath" verwenden, um ignorierte Elemente zu überprüfen.
StringValuePattern com.github.tomakehurst.wiremock.client.WireMock.matchingJsonPath(String value)
Wenn Sie überprüfen möchten, ob das Element vorhanden ist (Wenn die aktuelle Zeit oder zufällige Zeichenfolge von der Anwendung ausgegeben wird und es schwierig ist, sie zu vergleichen)
stubFor(post(urlEqualTo("/mockurl"))
.withRequestBody(equalToJson(REQUEST_JSON_STRING, true, true))
.withRequestBody(matchingJsonPath("$.data.token")) // "token"Stellen Sie sicher, dass ein Element vorhanden ist
.willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json")
.withBody(RESPONSE_JSON_STRING)));
Wenn Sie auch den Wert eines Elements überprüfen möchten (Zum Beispiel, wenn Sie variable Elemente anhand der Testdaten überprüfen möchten.)
stubFor(post(urlEqualTo("/mockurl"))
.withRequestBody(equalToJson(REQUEST_JSON_STRING, true, true))
.withRequestBody(matchingJsonPath("$.data[?(@.id == 'abcde')]")) // "id"Überprüfen Sie den Wert von
.willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json")
.withBody(RESPONSE_JSON_STRING)));
Recommended Posts