SpringMVC / mockMVC / jsonpath porównaj listę ciągów znaków

Obecnie piszę kilka testów jednostkowych dla projektu Spring MVC. Ponieważ zwracanym typem nośnika jest JSON, próbuję użyć jsonPath, aby sprawdzić, czy zwracane są poprawne wartości.

Mam problem z zweryfikowaniem, czy lista ciągów zawiera poprawne (i tylko poprawne) wartości.

Mój plan był:

Sprawdź, czy lista ma prawidłową długośćDla każdego elementu, który ma zostać zwrócony, sprawdź, czy jest na liście

Niestety, żadna z tych rzeczy nie działa.

Oto odpowiednia część mojego kodu:

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());

Działają tylko pierwsze dwa „oczekiwania” (isOk & isArray). Inne (pod względem długości i zawartości) mogę skręcać i obracać, jak chcę, nie dają mi żadnych przydatnych wyników.

Jakieś sugestie?

questionAnswers(2)

yourAnswerToTheQuestion