我正在尝试使用Java基本双精度值从JSON比较/断言double。 正确的方法是什么?
我通过Matchers.equalTo
方法(见下文)使用了简单而常规的方法
public class A{
private static double someJavaDouble = 12
}
given().
header(.....).
when().
get(url).
then().
statusCode(200)
body("value", Matchers.equalTo(someJavaDouble))
get(url)
的响应为JSON:
{
"success": true,
"currentValue": 12.0
}
在上面的代码中,我收到此错误:
JSON path currentValue doesn't match.
Expected: <12.0>
Actual: 12.0
p.s。 如果
body("value", Matchers.equalTo(12f))
答案 0 :(得分:0)
由于JSON Serializer
返回的值为Double
,而不是原始数据类型double
。
您可以从Double Double.doubleValue()
获取double值,也可以将double转换为Double new Double(someJavaDouble)
body("value", Matchers.equalTo(new Double(someJavaDouble)))
答案 1 :(得分:0)
RestAssured默认将数字解析为Float
。
基于github issue 1315,您可以对其进行配置以将其解析为Double:
JsonConfig jsonConfig = JsonConfig.jsonConfig()
.numberReturnType(JsonPathConfig.NumberReturnType.DOUBLE);
RestAssured.config = RestAssured.config()
.jsonConfig(jsonConfig);