Ist es möglich, die Anzahl der Mitglieder mit JsonPath zu zählen?
Mit dem Spring MVC Test teste ich einen Controller, der generiert
{"foo": "oof", "bar": "rab"}
mit
standaloneSetup(new FooController(fooService)).build()
.perform(get("/something").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
.andExpect(jsonPath("$.foo").value("oof"))
.andExpect(jsonPath("$.bar").value("rab"));
Ich möchte sicherstellen, dass keine anderen Mitglieder im generierten JSON vorhanden sind. Hoffentlich durch Zählen mit jsonPath. Ist es möglich? Alternative Lösungen sind ebenfalls willkommen.
hamcrest-all
als Abhängigkeit hinzu, sondern verwenden Siehamcrest-library
: code.google.com/p/hamcrest/wiki/HamcrestDistributablesSie können auch die Methoden im jsonpath verwenden, also anstelle von
du kannst tun
quelle
Wir können verwenden JsonPath Funktionen wie
size()
oderlength()
, wie folgt aus :Oder einfach analysieren
net.minidev.json.JSONObject
und die Größe ermitteln:In der Tat scheint der zweite Ansatz eine bessere Leistung zu erzielen als der erste. Ich habe einen JMH-Leistungstest durchgeführt und erhalte die folgenden Ergebnisse:
Den Beispielcode finden Sie hier .
quelle
Ich habe mich heute selbst damit befasst. Es scheint nicht so, als ob dies in den verfügbaren Zusicherungen implementiert ist. Es gibt jedoch eine Methode zum Übergeben eines
org.hamcrest.Matcher
Objekts. Damit können Sie etwa Folgendes tun:quelle
Wenn Sie keinen
com.jayway.jsonassert.JsonAssert
Klassenpfad haben (was bei mir der Fall war), kann das Testen auf folgende Weise eine mögliche Problemumgehung sein:[Anmerkung: Ich nahm an, dass der Inhalt des JSON immer ein Array ist]
quelle