Как создать проверку, используя MockRestRequestMatchers.jsonpath (String, Matcher) для свойства json, которое начинается с точки (.)? - PullRequest
0 голосов
/ 29 апреля 2020

Я пишу некоторый код для проверки свойств JSON из тела запроса. Мой фрагмент кода приведен ниже:

ResponseActions responseActions = expect(requestTo(startsWith(url)))
    .andExpect(method(HttpMethod.POST))
    .andExpect(header(HttpHeaders.AUTHORIZATION, AUTHORIZATION_HEADER_VALUE))
    .andExpect(header(HttpHeaders.CONTENT_TYPE, "application/json"))
    .andExpect(content().contentType(MediaType.APPLICATION_JSON))
    .andExpect(jsonPath("$.file", is(equalTo(contentId))))
    .andExpect(jsonPath("$.member").exists())
    .andExpect(jsonPath("$.member..tag", is(equalTo("email"))))
    .andExpect(jsonPath("$.member.email", is(equalTo(permissionId))));

Здесь тело запроса содержит ниже JSON:

{
    "file" : "{contentId}",
    "member" : {
        ".tag" : "email",
      "email" : "{emailAddress}"
    }
}

Из-за свойства JSON ".tag", которое содержит точка (.) в начале, я получаю исключение ниже:

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.AssertionError: JSON path "$.member..tag"
Expected: is "email"
     but: was <[]>
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) ~[spring-webmvc-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931) ~[spring-webmvc-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:666) ~[tomcat-embed-core-9.0.30.jar:9.0.30]
....

Как проверить такое свойство JSON, которое начинается с точки (.), используя MockRestRequestMatchers.jsonPath (String, Matcher <> ) метод? Любая помощь приветствуется.

...