Java 集成测试Spring启动应用程序JSON断言

Java 集成测试Spring启动应用程序JSON断言,java,Java,我有一个spring boot应用程序试图编写集成测试,但当我加载内存中的DB时,我从中得到一个值,但当do ASSERT与参数值匹配时,我无法比较大小和值 当我在《邮递员》中点击api时,这些是如何反应的 { "continuationToken": "09/07/19 05:21 PM", "permit": [ { "expiry": null, "activation": "2019-07-01T06:00:

我有一个spring boot应用程序试图编写集成测试,但当我加载内存中的DB时,我从中得到一个值,但当do ASSERT与参数值匹配时,我无法比较大小和值

当我在《邮递员》中点击api时,这些是如何反应的

{
    "continuationToken": "09/07/19 05:21 PM",
    "permit": [
        {
            "expiry": null,
            "activation": "2019-07-01T06:00:00.000+0000",
            "permitId": "C8S43N5",
            "plateNumber": "ERT1234",
            "plateState": "AB"
        },
        {
            "expiry": null,
            "activation": "2018-12-17T22:04:13.947+0000",
            "permitId": "CGW3TNF",
            "plateNumber": "FDF",
            "plateState": "AB"
        }
  ]
}
java.lang.AssertionError:Expected:是带有json路径的json “$[0][‘到期日’]”评估为“2080-06-26T06:00:00.000+0000” 但是:在中找不到json路径“$[0]['expiry']”


数组位于
permit
键下,因此请更改代码

       Assert.assertThat(response.getStatusCode(), Matchers.equalTo(HttpStatus.OK));
        String jsonBody = response.getBody();
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$.permit[0].expiry", Matchers.equalTo("2080-06-26T06:00:00.000+0000")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$.permit[0].activation", Matchers.equalTo("2019-06-26T22:33:14.849+0000")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$.permit[0].permitId", Matchers.equalTo("CS383UA")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$.permit[0].plateNumber", Matchers.equalTo("VGZ05")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$.permit[0].plateState", Matchers.equalTo("AB")));

使用
$.permit[0].expiry
等@DanielM感谢如何获取大小Assert.assertThat(jsonBody,JsonPathMatchers.hasJsonPath(“$”,Matchers.hasSize(1));这是一个不同的问题,不确定要检查的大小-但我相信类似的
Assert.assertThat(jsonBody,JsonPathMatchers.hasJsonPath($.permit,Matchers.hasSize(1))使用
$.permit.length()
获取许可数组的大小
       Assert.assertThat(response.getStatusCode(), Matchers.equalTo(HttpStatus.OK));
        String jsonBody = response.getBody();
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$.permit[0].expiry", Matchers.equalTo("2080-06-26T06:00:00.000+0000")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$.permit[0].activation", Matchers.equalTo("2019-06-26T22:33:14.849+0000")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$.permit[0].permitId", Matchers.equalTo("CS383UA")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$.permit[0].plateNumber", Matchers.equalTo("VGZ05")));
        Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$.permit[0].plateState", Matchers.equalTo("AB")));