【问题标题】:Expected and actual matching but test is failing预期和实际匹配,但测试失败
【发布时间】:2020-09-03 09:13:57
【问题描述】:

使用 rest-assured 调用基本的 rest 服务:

  given().get(baseUrl + "/base/")
                .then()
                .statusCode(200)
                .body("size()", is(2))
                .body("meanPerDay", equalTo(1.5))

返回:

java.lang.AssertionError: 1 expectation failed.
JSON path meanPerDay doesn't match.
Expected: <1.5>
  Actual: 1.5

baseUrl + "/base/"的payload是:

{
    "meanPerDay": 1.5,
    "stdPerDay": 0.5
}

如果我将 .body("meanPerDay", equalTo(1.5)) 替换为 .body("meanPerDay", equalTo("1.5"))

失败是:

java.lang.AssertionError: 1 expectation failed.
JSON path meanPerDay doesn't match.
Expected: 1.5
  Actual: 1.5

我没有正确访问meanPerDay 属性?

测试发现Expected的属性值是1.5?

【问题讨论】:

  • 我认为期望值的类型和实际值的类型不一样。
  • @StefanoCurcio 使用 .body("meanPerDay", Matchers.equalTo(Double.valueOf(1.5)));导致错误:java.lang.AssertionError: 1 期望失败。 JSON 路径 meanPerDay 不匹配。预期: 实际:1.5,Peter Quan 提供的答案似乎有效,但我不确定为什么使用 Matchers 会导致失败。

标签: java spring spring-boot junit rest-assured


【解决方案1】:

以下数字为浮点数

{
    "meanPerDay": 1.5,
    "stdPerDay": 0.5
}

但是,下面的测试是与“double”进行比较的:

 .body("meanPerDay", equalTo(1.5))

所以,你可以试试这个:

 .body("meanPerDay", equalTo(1.5f))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 2018-08-03
    • 2013-09-07
    • 2021-07-03
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多