我目前正在嘗試使用 Wiremock 模擬外部服務器。我的外部服務器端點之一接受有效載荷。該端點定義如下:
def sendRequestToMockServer(payload: String) = {
for {
request_entity <- Marshal(payload).to[RequestEntity]
response <- Http().singleRequest(
HttpRequest(
method = HttpMethods.GET,
uri = "http://localhost:9090/login",
entity = request_entity
)
)
} yield {
response
}
}
為了使用 Wiremock 模擬這個端點,我撰寫了以下代碼:
stubFor(
get(urlEqualTo("/login"))
.willReturn(
aResponse()
.withHeader("Content-Type","application/json")
.withBodyFile("wireMockResponse.json")
.withStatus(200)
)
.withRequestBody(matchingJsonPath("requestBody.json"))
)
我在 requestBody.json 檔案中定義了請求正文。
但是當我運行測驗時,我不斷收到一個錯誤,表明找不到請求的 Url。
我認為錯誤與這一行有關withRequestBody(matchingJsonPath("requestBody.json")),因為當我評論它時,錯誤消失了。
有關如何解決此問題的任何建議?
uj5u.com熱心網友回復:
matchingJsonPath不會在提供的檔案路徑中填充檔案,而是評估JsonPath提供的檔案。請參閱檔案。
我不完全確定有沒有辦法將請求正文作為 .json 檔案提供。如果您將檔案的內容復制到 中withRequest(equalToJson(_yourJsonHere_)),它會起作用嗎?如果是這樣,您可以將檔案內容作為定義上方的 JSON 字串獲取,并將其提供給函式(或者我猜,創建一個函式以從 .json 檔案回傳 JSON 字串)。
此外,您可以制作一個自定義請求匹配器來為您決議。我想只有在上述方法不起作用時我才會推薦這個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/381431.html
上一篇:為什么JacksonObjectReader`with`函式不適用于Scala?
下一篇:如何模擬MVar2make方法
