2017-12-03 24 views
0

일부 특정 속성의 모든 값이 동일한 유형 인 경우 내 통합 테스트를 확인하려고합니다. jsonPath 및 JsonPathResultMatchers와 함께이 작업을 수행하려고했지만 성공하지 못했습니다. 나는이 같은 짓 마지막에 :모든 JSON 속성 값 유형을 확인하는 가장 좋은 방법은 무엇입니까?

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

을하지만,이 작업을 수행하는 몇 가지 명확한 방법이 존재하는 경우 나는 같은 결과가 JSONPath을 달성 할 수 있을까? 또는 AssertJ 사용 스트림 코드없이 찾을 수있는 몇 가지 방법이 있습니다

답변

3

: Stream 주장이 여러 주장을 수행 할 수 있도록하기 위해 List로 변환되어 테스트중인 Stream 같은 몇 가지주의 사항이 제공됩니다 (그렇지 않으면 당신은 할 수 없습니다 스트림은 한 번만 소비 될 수 있습니다).

자바 독 : assertThat(BaseStream)

예 : 나는 행복 JSON을 확인 https://github.com/lukas-krecan/JsonUnit을 사용했다

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

, 당신은 그것을 시도하고 당신이 그것을 좋아하는 경우에 볼 수 있습니다.