在json路径断言中使用查询字符串参数定义合同

时间:2019-06-24 09:58:10

标签: spring-cloud-contract

我试图在重建生产者端之前使用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()东西。现在,我想我可以简单地将整个响应主体作为规格,但这似乎很麻烦。如果可以的话,我猜很好。

任何想法或帮助表示赞赏。

0 个答案:

没有答案