RestAssured 比较 Double 和 Hamcrest
RestAssured comparing Double with Hamcrest
我有一个愚蠢的事情,但我真的看不出我错过了什么:
我有一个测试:
@Test
public void testeBerechneRendite() {
get("/rendite?jahresnettomiete=8000&kaufpreis=100000&nebenkosten=500")
.then().body(is(closeTo(0.079, 0.01)));
}
错误是:
Response body doesn't match expectation.
Expected: is a numeric value within <0.01> of <0.079>
Actual: 0.07960199004975124
它接缝我不明白 closeTo(double, double)。根据我的理解,0.069 和 0.089 之间的所有数字都应该有效。如果我完全错了,请澄清:-)
Actual: 0.07960199004975124
- 它是一个字符串值,这就是你的匹配器不起作用的原因。您需要提取值,转换为 double 并在单独的 mathcer 中进行比较。
MatcherAssert.assertThat(
Double.parseDouble(get("/rendite?jahresnettomiete=8000&kaufpreis=100000&nebenkosten=500")
.then().extract().jsonPath().getString("args.val")),
closeTo(0.079, 0.01)
);
我有一个愚蠢的事情,但我真的看不出我错过了什么:
我有一个测试:
@Test
public void testeBerechneRendite() {
get("/rendite?jahresnettomiete=8000&kaufpreis=100000&nebenkosten=500")
.then().body(is(closeTo(0.079, 0.01)));
}
错误是:
Response body doesn't match expectation.
Expected: is a numeric value within <0.01> of <0.079>
Actual: 0.07960199004975124
它接缝我不明白 closeTo(double, double)。根据我的理解,0.069 和 0.089 之间的所有数字都应该有效。如果我完全错了,请澄清:-)
Actual: 0.07960199004975124
- 它是一个字符串值,这就是你的匹配器不起作用的原因。您需要提取值,转换为 double 并在单独的 mathcer 中进行比较。
MatcherAssert.assertThat(
Double.parseDouble(get("/rendite?jahresnettomiete=8000&kaufpreis=100000&nebenkosten=500")
.then().extract().jsonPath().getString("args.val")),
closeTo(0.079, 0.01)
);