[英]How define request body object property as nullable in Spring Cloud Contract Groovy DSL Contract definition?
我正在研究基於 Spring Cloud 的微服務,對服務之間的客戶端/API 進行 Spring Cloud 合同驗證。 WireMock 用於服務 API 存根的客戶端服務端測試。 Spring Cloud 的版本為2020.0.2 。 我有以下 Groovy 合同定義:
Contract.make {
description "Nullable sender & receiver API contract"
request {
method POST()
url value(consumer(regex('/message')))
headers {
contentType(applicationJson())
header("x-channelId", anyNonBlankString())
}
body(
sender: [
toEmail : anyEmail(),
firstName : anyNonBlankString(),
lastName : anyNonBlankString()
],
receiver: [
toEmail : anyEmail(),
firstName : anyNonBlankString(),
lastName : anyNonBlankString()
]
)
}
response {
status CREATED()
}
}
我想要實現的想法是讓“發送者”和“接收者”都可以為空。 我可以為兩者的每個子字段定義可為空的(DSL optional() ),但請求正文可能如下所示:
{sender:null, receiver:null}
我已經嘗試為每種可能性定義多個合同(一個同時填充,第二個是sender: null ,第三個是receiver: null ,兩個都為 null)。 在這種情況下,客戶服務端WireMock,上面API存根定義使用,不希望存根匹配到合適的請求-例如使用要求與空發送者打電話時,WireMock標識為最接近的存根一個與期望的發送者,並返回404,無視合同需要空的sender 的定義。
有沒有辦法將具有內部結構的字段定義為可以為空? 在文檔中,我只看到了創建可為空字段值的可能性,而不是整個結構。
如果一個字段可能為null
您應該創建 2 個合同。 1 為null
,1 為非null
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.