SpringMVC / mockMVC / jsonpath vergleicht die Liste der Strings

Ich bin derzeit am schreiben von unit tests für eine Spring-MVC-Projekt.
Als die zurückgegebenen Medien-Typ ist JSON, die ich versuche zu verwenden jsonPath um zu überprüfen, ob die richtigen Werte zurückgegeben.

Die Mühe, die ich habe, ist zu überprüfen, ob eine Liste von strings enthält die richtigen (und nur die richtigen) Werte.

Mein Plan war:

  1. Prüfen, ob die Liste hat die richtige Länge
  2. Für jedes element, das soll zurückgegeben werden, prüfen Sie, ob es in der Liste

leider, keines dieser Dinge scheinen 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 zwei "Erwartungen" (isOk & isArray) arbeiten. Die anderen (für Länge und Inhalt) ich kann es drehen und wenden möchte ich aber, sind Sie nicht geben Sie mir keine nützlichen Ergebnis.

Irgendwelche Vorschläge?

InformationsquelleAutor der Frage Martin Keßler | 2013-03-12

Schreibe einen Kommentar