Чтение первого поля json

#java #json #spring-boot #junit

#java #json #весенняя загрузка #junit

Вопрос:

Я запускаю тест JUnit, и вот мой текущий ожидаемый и фактический результат:

 Expected :"resultCode":"SUCCESS"
Actual   :{"resultCode":"SUCCESS","data":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJlbWFpbEBnbWFpbC5jb20iLCJlbWFpbCI6ImVtYWlsQGdtYWlsLmNvbSIsInBhc3N3b3JkIjoicGFzc3dvcmQifQ.lKxvMPhsJAjFqOryb-0cUgBh-C9jjUfatydX42Jos5clkn9N9YA01DRzZX0XbhdYXJaacUfx8GwRsFGsLjGcxg"}
  

Мне нужно настроить ожидаемый результат для чтения только первого поля фактического результата json, потому что токен данных является динамическим и не может быть одинаковым в каждом тесте.
Мой текущий код:

 this.mockMvc.perform(post("/auth/logIn")
        .contentType(MediaType.APPLICATION_JSON)
        .content(json))
        .andExpect(status().isOk())
        .andExpect(content().contentType("application/json;charset=UTF-8"))
        .andExpect(content().string(""resultCode":"SUCCESS"")).andReturn();
  

Я думаю, мне нужно внести изменения в последнюю строку. Есть идеи?

Ответ №1:

Я думаю, вы имели в виду что-то вроде этого:

 .andExpect(MockMvcResultMatchers.jsonPath("$.resultCode", is("SUCCESS")))
  

поскольку json является отображением ключ-значение, вы не должны предполагать порядок полей в нем