SpringMVC / mockMVC / jsonpath vergleicht die Liste der Zeichenfolgen

Derzeit schreibe ich einige Unit-Tests für ein Spring MVC-Projekt. Da der zurückgegebene Medientyp JSON ist, versuche ich, mit jsonPath zu überprüfen, ob die richtigen Werte zurückgegeben werden.

Das Problem ist, zu überprüfen, ob eine Liste von Zeichenfolgen die richtigen (und nur die richtigen) Werte enthält.

Mein Plan war:

Überprüfen Sie, ob die Liste die richtige Länge hatÜberprüfen Sie für jedes Element, das zurückgegeben werden soll, ob es in der Liste enthalten ist

Leider scheint keines dieser Dinge zu funktionieren.

Hier ist der relevante Teil meines Codes:

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

Nur die ersten beiden "Erwartungen" (isOk & isArray) funktionieren. Die anderen (nach Länge und Inhalt) kann ich drehen und wenden, wie ich will, sie geben mir kein nützliches Ergebnis.

Irgendwelche Vorschläge?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage