【问题标题】:Test if an array contains an element from another array with Hamcrest使用 Hamcrest 测试一个数组是否包含另一个数组中的元素
【发布时间】:2018-07-02 06:31:26
【问题描述】:

我其实有两种数据:

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

【问题讨论】:

    标签: testing rest-assured hamcrest


    【解决方案1】:

    我相信检查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)

    【讨论】:

      猜你喜欢
      • 2021-01-30
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 2021-06-23
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多