spring-cloud-contract - 在 json 路径断言中使用查询字符串参数定义合约
问题描述
在重建生产者端之前,我正在尝试使用 SCC 编写一些合同(没有现有的测试!)。文档中有关列表和更深层次数据结构的示例有点薄,所以我想了解这是否可行,或者我可能不得不调用命令来做出正确的断言。我正在使用最新版本 v2.11
所以 -
Given:将在其有效负载中返回对象列表的 API。列表的长度将取决于客户端的身份,即客户端 A 将获得 3 个项目,客户端 B 将获得 4 个项目。客户的身份在这里并不重要。
何时:客户端发出 GET 请求,传递查询字符串参数以在项目列表中选择项目
然后:我想编写一个从请求中获取输入并证明响应包含对象列表的合同,并且与选择器匹配的项目有一个布尔字段选择:true,而其余项目已选择: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() 的内容。现在我想我可以简单地将整个响应体作为规范,但这似乎很笨拙。如果必须是,那我想也很好。
任何想法或帮助表示赞赏。
解决方案
推荐阅读
- ios - 如何在 iOS Swift 中实现标签嵌入 UIImageView 中,如图所示?
- python - 从字符串创建熊猫数据框(csv格式)
- c# - C#反序列化分页
- java - Java如何更改转换器pdf中的字体 - pdfbox
- python - 使 python3 子包模块可用于在主包命名空间中导入
- reactjs - 反应本机iOS解决方案在第三方文件中出错
- ios - UINavigationBar.appearance().tintColor 与 UIBarButtonItem foregroundColor
- python - 在子列表的开头和结尾创建包含元组的列表列表
- html - 在 Observable 数组中嵌套 *ngFor
- angular - 如何使用 web-ext-types 来避免错误 TS2304