Bet*_*cha 5 testing hamcrest rest-assured
我实际上有两种类型的数据:
a = ["1", "2", "3", "3", "5"]
b = ["7", "2"]
given()
.header("Content-Type", "application/json").
when()
.post(this.url).
then()
.statusCode(200)
.contentType("application/json")
.body(myPathToData, everyItem(haveOneOrMoreElementFrom(a)));
Run Code Online (Sandbox Code Playgroud)
我想使用 Hamcrest 测试在我放心请求后的身体反应中,b(收到的元素)是否包含 a 中的一个或多个元素(haveOneOrMoreElementFrom在我的示例中)。
是否也可以对我的身体反应产生作用?
解决方案:
我找到了一个可能的解决方案:
everyItem(hasItem(isIn(a)))
我相信检查是否b包含至少一个元素的解决方案a是
assertThat(b, hasItemInArray(isIn(a))); // for arrays
assertThat(b, hasItem(isIn(a))); // for collections
Run Code Online (Sandbox Code Playgroud)
如果放心的话,那就是
...
then()
.body(pathToData, hasItem(isIn(a)));
Run Code Online (Sandbox Code Playgroud)
在 Hamcrest 2 中,org.hamcrest.Matchers::isIn方法已被弃用,因此建议使用is(in(a))或in(a)代替。