【发布时间】: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