我正在使用REST-Assured来测试一些API.我的API明确地使用
JSON进行响应,并且如果这是响应,则根据文档进行响应:
{
"id": "390",
"data": {
"leagueId": 35,
"homeTeam": "Norway",
"visitingTeam": "England",
},
"odds": [{
"price": "1.30",
"name": "1"
},
{
"price": "5.25",
"name": "X"
}]
}
我可以这样测试:
@Test
public void givenUrl_whenSuccessOnGetsResponseAndJsonHasRequiredKV_thenCorrect() {
get("/events?id=390")
.then()
.statusCode(200)
.assertThat()
.body("data.leagueId", equalTo(35));
}
当然这是可读的,但我会对JSON进行全面比较(即:这是JSON响应;这是一个罐装JSON – 资源文件是完美的 – 那些JSON等于吗?). REST-Assured是否提供类似的东西,或者我需要手动制作.
最佳答案 我遇到了同样的问题,并使用RestAssured的JsonPath解析它以将json文件解析为Map,然后将其与Hamcrest Matchers进行比较.这样订单等并不重要.
import static org.hamcrest.Matchers.equalTo;
import io.restassured.path.json.JsonPath;
...
JsonPath expectedJson = new JsonPath(new File("/path/to/expected.json"));
given()
...
.then()
.body("", equalTo(expectedJson.getMap("")));