【问题标题】:How to test pact with null data如何使用空数据测试协议
【发布时间】:2021-11-15 02:28:10
【问题描述】:

我知道 PACT 要求提供者数据需要由我们控制,但我面临以下情况 我有多个消费者的契约合同,都有一些强制属性,有些是可选属性,但是业务逻辑抑制了所有具有空值的属性,但根据合同,我仍然需要该值为空, 我该怎么办? 编辑1: 即让我们在下面说我的合同外观

consumer sent request with below params:
{ "method": "GET", "path" : "/pathOfApi", "headers":{ "accept": "json" } }

提供者响应以下数据:

{ "Status": 200,
"body" :[
{"country" : "string",
"countryId" :"string",
"postalcode": "string",
"addressLine1" :"string",
"addressLine2" : "string"
"customerName" : "string",
"customerId" : "string"
}
]

现在并非所有客户都有地址第 2 行,如果 addressLine 2 为空,则现在在生产中它不会出现在 api 的输出中,但对于我们的合同字段应该出现空

【问题讨论】:

    标签: pact pact-jvm pact-java


    【解决方案1】:

    如果您的提供者没有返回字段,但消费者期待null,那么消费者需要更改他们的预期(因为它不正确)或者提供者应该更新其实现以返回null 值。

    仅仅因为消费者要求某事并不意味着您需要这样做!

    如果在某些情况下该字段存在而其他情况下不存在,则您需要编写两个测试来涵盖每种情况。我建议用所有字段覆盖一个案例,另一个用最少的字段集(参见https://docs.pact.io/faq/#why-is-there-no-support-for-specifying-optional-attributes)。

    【讨论】:

    • 对不起没有得到你..在我的情况下,消费者给出了合同,即 15 个字段有时都存在,有时不存在..所以提供者所做的是该 id 不存在的任何字段,它不提供给消费者,但它可以呈现不同的 id
    • 对不起,我想我不明白你的情况。也许您能用代码示例和有效负载解释一下吗?这样我们就可以为您澄清事情。听起来确实有点像需要测试您通常使用 Provider States 的各种状态(数据存在/不存在)。
    • 已更新,。你现在可以检查一下吗
    • 根据您的新问题详情更新
    • Pact 是一个单元测试工具,因此假设您可以像在单元测试中一样完全控制您的代码。请参阅我们的第一个 AMA(docs.pact.io/help/amas/#apac-1)以及我们的文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多