如何在Rest Assured中比较/断言双精度数值

7

我试图比较/断言一个JSON中的双精度浮点数和Java基本类型的双精度浮点数。应该如何正确地执行此操作?

我使用了简单而常规的方法,使用Matchers.equalTo方法,如下所示:

public class A{
       private static double someJavaDouble = 12
}

given().
        header(.....).
when().
        get(url).
then().
        statusCode(200)
        body("value", Matchers.equalTo(someJavaDouble))
< p > get(url) 的响应是JSON格式的:

{
    "success": true,
    "currentValue": 12.0
}

在上面的代码中,我得到了这个错误:
JSON path currentValue doesn't match.
Expected: <12.0>
  Actual: 12.0

附言: 如果符合条件,它就有效。

body("value", Matchers.equalTo(12f))

可能是REST Assured浮点数比较的困惑的重复问题。 - CryptoFool
2个回答

4

默认情况下,RestAssured将数字解析为Float

根据github问题1315,您可以将其配置为解析为Double:

JsonConfig jsonConfig = JsonConfig.jsonConfig()
    .numberReturnType(JsonPathConfig.NumberReturnType.DOUBLE);

RestAssured.config = RestAssured.config()
    .jsonConfig(jsonConfig);

1
如果你不确定应该把这个放在哪里,你可以把它放在你的测试类的@BeforeAll中。 - Janardhan

1
由于JSON Serializer返回的值是Double而不是基本数据类型double,因此您可以通过Double.doubleValue()获取双精度浮点数或将double转换为Double,如new Double(someJavaDouble)
body("value", Matchers.equalTo(new Double(someJavaDouble)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接