簡體   English   中英

如何在 Spring Cloud Contract Groovy DSL Contract 定義中將請求正文對象屬性定義為可為空?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM