完整的Json与RestAssured匹配

我正在使用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("")));
点赞