Fra*_*ala 1 hamcrest rest-assured
我不知道如何使用 hamcrest 创建代码来检查具有这些属性的数组内的数组。
(想象一下,因为它有多个具有不同数据的条目)
{
"mobilenum": "+6519829340",
"firstname": "Allen",
"lastname": "Edwards",
"location": "Singapore"
}
Run Code Online (Sandbox Code Playgroud)
如果我使用这个:
.body("smsentries.mobilenum", contains(equalTo("+6519829340")));
Run Code Online (Sandbox Code Playgroud)
它返回它确实存在,但我如何进行更多检查以确保它找到的对象也具有相同的名字、姓氏和位置?
我也认为这是错误的:
.body("smsentries.mobilenum", contains(equalTo("+6519829340")))
.and()
.body("smsentries.firstname", contains(equalTo("Allen"));
Run Code Online (Sandbox Code Playgroud)
据我所知,如果数组包含的 mobilenum 等于所提供的值并且数组包含名称“Allen”,则它会搜索数组
我需要的是找到 mobilenum 等于“+6519829340”且名字等于“Allen”的数组。
你们知道该怎么做吗?
我需要的是找到 mobilenum 等于“+6519829340”且名字等于“Allen”的数组。
您可以使用“查找”方法:
.body("smsentries.find { it.mobilenum == '+6519829340' }.firstname", equalTo("Allen")
.body("smsentries.find { it.mobilenum == '+6519829340' }.lastname", equalTo("Edwards").
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,您本质上是在两种情况下复制路径表达式,因此为了改进这一点,我们可以使用根路径:
.root("smsentries.find { it.mobilenum == '+6519829340' }").
.body("firstname", equalTo("Allen")
.body("lastname", equalTo("Edwards").
Run Code Online (Sandbox Code Playgroud)
您还可以参数化根路径:
.root("smsentries.find { it.mobilenum == '%s' }").
.body("firstname", withArgs("+6519829340"), equalTo("Allen")
.body("lastname", withArgs("+6519829340"), equalTo("Edwards").
.body("firstname", withArgs("+12345678"), equalTo("John")
.body("lastname", withArgs("+12345678"), equalTo("Doe").
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2156 次 |
| 最近记录: |