契约:如何检查响应中可能存在或不存在的字段

2024-10-03 19:19:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个服务将用json blob响应请求,例如:

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

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

^{pr2}$

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


Tags: json类型定义arrayblobfield2field1选字
1条回答
网友
1楼 · 发布于 2024-10-03 19:19:43

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

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

首先,假设您在进行验证测试时可以控制提供者的数据(和消费者的数据)。如果你不这样做,那么也许契约不是你处境的最佳工具。在

其次,如果您仔细考虑一下,如果Pact支持声明元素$。正文.名称可能出现在响应中,然后编写可以处理可选$的使用者代码。正文.名称,但实际上,提供者提供$。正文.名字,任何测试都不会不告诉你你做了一个错误的假设。请记住,提供程序可能会返回额外的数据,但它必须至少提供您所期望的数据。在


我建议您编写一个需要填充数组的交互,这样您就知道如何处理填充的数组。然后把它完全排除在其他交互之外,不管它是否被填充。在

相关问题 更多 >