我知道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的输出中,但对于我们的合同字段应该以空
出现如果你的提供者没有返回一个字段,但是消费者期望null
,那么要么消费者需要改变他们的期望(因为它是不正确的),要么提供者应该更新它的实现来返回null
值。
消费者的要求并不意味着你需要去做!
如果在某些情况下字段存在,而在其他情况下不存在,则需要编写两个测试来覆盖每种情况。我建议使用所有字段覆盖一种情况,而使用最小字段集覆盖另一种情况(参见https://docs.pact.io/faq/#why-is-there-no-support-for-specifying-optional-attributes)。