die sich darauf verlassen usage documentation hat Beispiele wie folgt aus:Verwirrung über REST Assured Gleitkommazahlen Vergleiche
get("/lotto").then().body("lotto.lottoId", equalTo(5));
OK, so dass sie mit einem hamcrest Matcher 5
zum int Wert zu vergleichen.
Aber sie haben einen Abschnitt zu sagen, dass der Rest Assured JSON-Parser verwendet standardmäßig float
und nicht double
, so anstatt zu 12.12
das Vergleichen ich 12.12f
vergleichen sollte:
get("/price").then().body("price", is(12.12f));
Warten, so tat, wie 5
Arbeit oben, das ist ein int
und kein double
? Verwendet der JSON-Parser verschiedene Grundelemente für ganzzahlige und nicht ganzzahlige Werte?
Aber es wird mehr verwirrend. Gut versierte Programmierer wissen, dass Sie Fließkommawerte ohnehin nicht direkt vergleichen sollten (wegen der Komplexität der Gleitkommawerte usw.). Stattdessen sollten Sie Matchers.closeTo(double operand, double error)
verwenden, die eine Fehlermarge bietet. Dies ist der richtige Weg, es zu tun. Aber warte --- auch wenn ich 12.12f
an Matchers.closeTo übergebe (Doppeloperand, Doppelfehler), wird es nicht immer noch in double
konvertiert? Wird dies mit REST Assured funktionieren?
Ihre Antwort kam meiner Frage am nächsten, obwohl einige Ihrer Antworten nicht maßgeblich waren. Der wichtigste Punkt, den Sie hervorgebracht haben, ist, dass wenn ich 'Matcher.closeTo()' benutze (und das sollten wir sowieso verwenden), ist es egal, was der JSON-Parser ausgibt. –