【发布时间】:2020-07-27 11:05:42
【问题描述】:
我正在尝试向我的应用程序添加一些带有 Rest-Assured 的测试,但我不知道如何断言一些嵌套值。错误信息是:
预期:(包含“json”的集合) 实际:[[json, spring, gulp, path etc...]]
代码如下:
when().
get("/api/personsByID/{id}/{count}", 262, 2).
then().
statusCode(200).
body("personDependencies.name", hasItems("json"));
这是休息控制器返回的 JSON 文件:
[
{
"id": 346,
"verified": true,
"displayName": "eda656a2c3cb59ae840e40a28ba4ab50bfb9de0185abcb901c6af6dc59d6668f",
"emails": [
{
"email": "16a23f2e5477df0bbcad718c3abc235b2cb8a1b6648d14f58d42a7be13df2b6e"
}
],
"personDependencies": [
{
"name": "json"
},
{
"name": "spring"
},
{
"name": "gulp"
},
{
"name": "path"
},
{
"name": "junit"
},
{
"name": "activemq"
},
{
"name": "hibernate"
},
{
"name": "jstl"
},
{
"name": "phantomjs"
},
{
"name": "activiti"
},
{
"name": "commons"
},
{
"name": "h2"
},
{
"name": "joda"
},
{
"name": "log4j"
},
{
"name": "exec"
},
{
"name": "admin"
},
{
"name": "coveralls"
},
{
"name": "cxf"
},
{
"name": "cglib"
},
{
"name": "camel"
},
{
"name": "sugaronrest"
},
{
"name": "tslint"
},
{
"name": "httpclient"
},
{
"name": "guava"
},
{
"name": "inventory"
},
{
"name": "jackson"
},
{
"name": "gson"
},
{
"name": "event"
},
{
"name": "OTRS"
},
{
"name": "maven"
},
{
"name": "karma"
},
{
"name": "slf4j"
},
{
"name": "postgresql"
},
{
"name": "typescript"
},
{
"name": "jasmine"
},
{
"name": "spa"
},
{
"name": "javax.servlet"
}
],
"countries": [],
"member_of": [],
"projects": [],
"employee_type": [],
"languages": [
{
"language": "reStructuredText",
"sum": 575
},
{
"language": "JSON",
"sum": 21
},
{
"language": "JavaScript",
"sum": 4467
},
{
"language": "Java",
"sum": 7958
},
{
"language": "Python",
"sum": 2
},
{
"language": "XML",
"sum": 477
},
{
"language": "Plain Text",
"sum": 41
}
],
"distance": 0.6028837702084446
}
]
我不知道如何做出正确的断言,任何帮助都会很棒。谢谢!
【问题讨论】:
-
见github.com/rest-assured/rest-assured/issues/805的例子,你正在处理一个数组,需要选择一个特定的实例或为所有实例做断言。
-
我试过:find body(" find {it.id=='346'}.personDependencies.name", hasItems("json", "jackson")) 但这会返回一个空值
-
您的具体要求是什么?
-
如您所见,它只是输出 JSON 文件中的一个 id,但我想要实现的是能够选择其中一个对象,例如 id=400 并断言如果该对象在 personDependencies 中有某些值。我试过:find body(" find {it.id=='346'}.personDependencies.name", hasItems("json", "jackson")) 但这会返回 null
标签: java rest rest-assured