В настоящее время я пишу некоторые модульные тесты для проекта Spring MVC. Поскольку возвращаемым типом носителя является JSON, я пытаюсь использовать jsonPath для проверки правильности верных значений.
Проблема заключается в том, чтобы проверить, содержит ли список строк правильные (и только правильные) значения.
Мой план был:
- Убедитесь, что список имеет правильную длину
- Для каждого элемента, который должен быть возвращен, проверьте его в списке
К сожалению, ни одна из этих вещей не работает.
Здесь соответствующая часть моего кода:
Collection<AuthorityRole> correctRoles = magicDataSource.getRoles();
ResultActions actions = this.mockMvc.perform(get("/accounts/current/roles").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()) // works
.andExpect(jsonPath("$.data.roles").isArray()) // works
.andExpect(jsonPath("$.data.roles.length").value(correctRoles.size())); // doesn't work
for (AuthorityRole role : correctRoles) // doesn't work
actions.andExpect(jsonPath("$.data.roles[?(@=='%s')]", role.toString()).exists());
Работают только первые два "ожидания" (isOk и isArray). Другие (по длине и содержанию) я могу крутить и поворачивать, но я хочу, они не дают мне полезного результата.
Любые предложения?