#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 является отображением ключ-значение, вы не должны предполагать порядок полей в нем