JUnit单元测试使用jsonPath无法匹配返回JSON中city字段问题咨询
问题根因
你返回的响应JSON根节点为数组类型,当前使用的$.city表达式是尝试直接读取根对象下的city字段,因此匹配不到对应值。
解决方案
你可以根据业务场景选择以下两种写法:
- 当你确认返回数组始终只有1个元素时,取第一个元素的
city字段校验,对应代码如下:
.andExpect(jsonPath("$[0].city").value("espoo"))
- 当你需要校验数组中所有元素的
city字段都包含预期值时,匹配所有数组元素即可,对应代码如下:
// 需提前导入org.hamcrest.Matchers.contains静态方法 .andExpect(jsonPath("$[*].city", contains("espoo")))
语法说明
你打印的响应Body最外层由[]包裹,说明$代表的JSON根节点是数组类型,访问数组元素需要使用[索引]语法:[0]代表取数组的第一个元素,[*]代表匹配数组内的所有元素。
内容的提问来源于stack exchange,提问作者Masi Boo
相关产品推荐
相关产品推荐

