3

我对 Java 比较陌生,我要求编写 JSON 响应服务器的测试。我发现JSONassert非常有用,但我没有成功编写方法getRESTData

有人可以帮忙吗?

@Test
public void testGetFriends() throws JSONException {
    JSONObject data =  getRESTData("/friends/367.json");
    String expected = "{friends:[{id:123,name:\"Corby Page\"}"
            + ",{id:456,name:\"Solomon Duskis\"}]}";
    JSONAssert.assertEquals(expected, data, false);
}
4

2 回答 2

2

您可以获取数据String并将其传递给JSONAssert.assertEquals. JSONObject不需要转换为。

要从 URL 获取数据,您可以使用URL.getContent以下方法:

final String data = new URL("...").getContent();
String expected = "{friends:[{id:123,name:\"Corby Page\"}"
        + ",{id:456,name:\"Solomon Duskis\"}]}";
JSONAssert.assertEquals(expected, data, false);
于 2018-09-19T14:24:00.303 回答
1

这也可以通过 ModelAssert - https://github.com/webcompere/model-assert来实现,它可以将任何可序列化为 JSON 的内容作为输入:

@Test
public void testGetFriends() throws JSONException {
    JSONObject data =  getRESTData("/friends/367.json");
    String expected = "{friends:[{id:123,name:\"Corby Page\"}"
            + ",{id:456,name:\"Solomon Duskis\"}]}";
    
    assertJson(data).isEqualTo(expected);
}

IIRCJSONObject本质上是一个Map,因此assertJson会将其转换JsonNode为用于比较的内部格式。

于 2021-06-14T07:52:14.313 回答