使用Hamcrest测试数组是否包含来自另一个数组的元素

时间:2018-07-02 06:31:27

标签: testing rest-assured hamcrest

我实际上有两种类型的数据:

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)));

我想用Hamcrest测试一下在我得到保证的请求之后我的身体反应,如果b(收到的元素)包含一个或多个来自a(在我的示例中为haveOneOrMoreElementFrom)的元素。

还能在我的身体反应中发挥作用吗?

解决方案:

我找到了可能的解决方案: everyItem(hasItem(isIn(a)))

1 个答案:

答案 0 :(得分:0)

我认为检查b是否包含来自a的至少一个元素的解决方案是

assertThat(b, hasItemInArray(isIn(a))); // for arrays

assertThat(b, hasItem(isIn(a))); // for collections

如果有保证,那就

...

then()
       .body(pathToData, hasItem(isIn(a)));

在Hamcrest 2中,不推荐使用org.hamcrest.Matchers::isIn方法,因此建议使用is(in(a))或仅使用in(a)