2017-12-03 6 views
0

Ich versuche, meinen Integrationstest einzuchecken, wenn alle Werte von einer bestimmten Eigenschaft den gleichen Typ haben. Ich versuchte es mit jsonPath und JsonPathResultMatchers, aber ohne Erfolg. Schließlich habe ich in etwa so:Wie können Sie alle JSON-Eigenschaftenwerte am besten prüfen?

MvcResult result = mockMvc.perform(get("/weather/" + existingCity)) 
       .andExpect(MockMvcResultMatchers.status().isOk()) 
       .andReturn(); 


String responseContent = result.getResponse().getContentAsString(); 
TypeRef<List<Object>> typeRef = new TypeRef<List<Object>>() { 
}; 

List<Object> humidities = JsonPath.using(configuration).parse(responseContent).read("$.*.humidity", typeRef); 
Assertions.assertThat(humidities.stream().allMatch(humidity -> humidity instanceof Integer)).isTrue(); 

Aber ich frage mich, ob etwas klarer Weise existieren, dies zu tun, kann das gleiche Ergebnis mit JSONPath erreicht werden? Oder AssertJ hat eine Methode, um es ohne Verwendung Stream-Code zu finden

Antwort

3

einfach auf dem Teil AssertJ zu beantworten: Stream Behauptungen mit einigen Einschränkungen als Stream im Test werden ein List umgewandelt wird, um mehrere Behauptungen ausführen zu können (sonst kann man nicht wie ein Stream nur einmal verbraucht werden kann).

Javadoc: assertThat(BaseStream)

Beispiel:

assertThat(DoubleStream.of(1, 2, 3)).isNotNull() 
            .contains(1.0, 2.0, 3.0) 
            .allMatch(Double::isFinite); 

ich glücklich https://github.com/lukas-krecan/JsonUnit verwendet JSON zu überprüfen, können Sie es versuchen und sehen, ob es Ihnen gefällt.

Verwandte Themen