gpt4 book ai didi

python - pact:如何检查响应中可能存在或可能不存在的字段

转载 作者:行者123 更新时间:2023-12-01 02:23:59 26 4
gpt4 key购买 nike

我有一个服务将使用 json blob 响应请求,如下所示:

{
"field1": 1,
"field2": "2",
"array": [1,2,3]
}

我知道我可以使用 EachLike 来测试 array,如下所示:

expected = {
"field1": Like(1),
"field2": Like("2"),
"array": EachLike(1)
}

问题在于“array”是响应中的可选字段。它可能根本不存在,如果不存在,我仍然需要合约来验证。如何定义响应正文中的字段必须与类型匹配(如果存在),但它可能根本不存在?

最佳答案

来自https://github.com/pact-foundation/pact-ruby/wiki/FAQ#why-is-there-no-support-for-specifying-optional-attributes

为什么不支持指定可选属性?

首先,假设您在进行验证测试时可以控制提供者的数据(和消费者的数据)。如果您不这样做,那么 Pact 可能不是适合您情况的最佳工具。

其次,如果你想一想,如果 Pact 支持断言元素 $.body.name 可能出现在响应中,那么你编写的消费者代码可以处理可选的 $.body.name,但事实上,提供者给出 $.body.firstname,任何测试都不会告诉您您做出了错误的假设。请记住,提供商可以在不违反契约(Contract)的情况下返回额外的数据,但它必须至少提供您期望的数据。

<小时/>

我建议您编写一个需要填充数组的交互,以便您知道如何处理填充的数组。然后将其完全排除在其他交互之外,这样无论是否填充都不再重要。

关于python - pact:如何检查响应中可能存在或可能不存在的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47595272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com