2017-02-08 4 views
1

ich eine dumme Sache, aber ich kann nicht wirklich sehen, was bin ich fehlt:RestAssured mit hamcrest Doppel Vergleich

Ich habe einen Test:

@Test 
public void testeBerechneRendite() { 
    get("/rendite?jahresnettomiete=8000&kaufpreis=100000&nebenkosten=500") 
    .then().body(is(closeTo(0.079, 0.01))); 
} 

Fehler ist:

Response body doesn't match expectation. 
Expected: is a numeric value within <0.01> of <0.079> 
Actual: 0.07960199004975124 

Es scheint, ich verstehe nicht die closeTo (double, double). Aus meiner Sicht sollten alle Zahlen zwischen 0,069 und 0,089 gültig sein. Wenn ich total falsch liege, bitte klarstellen :-)

Antwort

2

Actual: 0.07960199004975124 - es ist ein Stringwert, deshalb funktioniert dein Matcher nicht. Sie müssen den Wert extrahieren, in Doppel konvertieren und in einem separaten Rechenprogramm vergleichen.

MatcherAssert.assertThat(
    Double.parseDouble(get("/rendite?jahresnettomiete=8000&kaufpreis=100000&nebenkosten=500") 
    .then().extract().jsonPath().getString("args.val")), 
    closeTo(0.079, 0.01) 
);