Java 集成测试Spring启动应用程序JSON断言
我有一个spring boot应用程序试图编写集成测试,但当我加载内存中的DB时,我从中得到一个值,但当do ASSERT与参数值匹配时,我无法比较大小和值 当我在《邮递员》中点击api时,这些是如何反应的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:
{
"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")));