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 istLeider 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?