我试图在重建生产者端之前使用SCC编写一些合同(没有现有的测试!)。列表中的示例和文档中更深层的数据结构都比较薄,因此我想了解这是否可行,或者我可能不得不调用命令做出正确的断言。 我正在使用最新版本v2.11
所以-
给出: 一个将在其有效负载中返回对象列表的API。列表的长度将取决于客户端的身份,即客户端A将获得3个项目,客户端B将获得4个项目。客户的身份在这里不重要。
何时: 客户端发出GET请求,并在项目列表中 内传递用于项目选择的querystring参数
然后: 我想写一个合同,该合同从请求中获取输入,并证明响应中包含对象列表,并且与选择器匹配的项目具有布尔字段selected:true,而其余项目的selected:false。在选择器错误的边缘处没有选择任何项目。
例如对于请求GET /someapi?id=bbb
响应
{ foo: xxxy, bar: 123, baz: [
{ id: 'aaa', selected: false, .... },
{ id: 'bbb', selected: true, .... },
{ id: 'ccc', selected: false, .... }
] }
当然,所选项目可以在列表中的任何位置。所以我想到了像这样的伪代码的断言-
jsonPath('$.baz[?(@.id == fromRequest().query("id"))].selected', byEquality( true ) )
但是我无法执行JSONPath语句中的fromRequest()东西。现在,我想我可以简单地将整个响应主体作为规格,但这似乎很麻烦。如果可以的话,我猜很好。
任何想法或帮助表示赞赏。