使用文档 像这样:
get("/lotto").then().body("lotto.lottoId", equalTo(5));
好的,他们使用Hamcrest matcher来与int值5
进行比较。
但是他们有一部分说REST Assured JSON解析器默认使用float
而不是double
,所以我应该将比较对象从12.12
改为12.12f
:
get("/price").then().body("price", is(12.12f));
那么,5
是一个 int
而不是 double
,它是如何工作的呢?JSON解析器是否使用了不同的原始类型来处理整数和非整数值?
但事情变得更加令人困惑。精通编程的程序员知道,直接比较浮点数值是不可取的(因为浮点数值存储的复杂性等原因)。相反,应该使用Matchers.closeTo(double operand, double error)
,这样可以提供一个误差范围。这才是正确的做法。但是等等 --- 即使我将 12.12f
传递给 Matchers.closeTo(double operand, double error),它是否仍然会将其转换为 double
?这个方法能够在 REST Assured 中使用吗?
Matcher.closeTo()
(这也是我们应该使用的),那么JSON解析器输出什么可能并不重要。 - Garret Wilson