2017-09-22 1 views
1

반환 된 배열의 순서가 지정되지 않은 경우 올바른 테스트 결과를 테스트하려면 어떻게해야합니까? 배열에있는 순서가 각 테스트 실행마다 다르기 때문에 내 테스트가 실패합니다. 정렬되지 않은 배열에 대해이 문제를 해결하려면 어떻게해야합니까?정렬되지 않은 배열을 처리하는 방법 mockmvc를 사용하여 테스트

mockMvc.perform(delete("/deleteSomeObject" + "/objIdLong" + "/objFKeyString")) 
    . 
    . 
    .andExpect(jsonPath("$[0].id.objIdLong", is(533252))) 
    .andExpect(jsonPath("$[0].id.objFKeyString", is("SomeString"))) 
    .andExpect(jsonPath("$[1].id.objIdLong", is(642654252))) 
    .andExpect(jsonPath("$[1].id.objFKeyString", is("ThisString"))) 
    .andExpect(jsonPath("$[2].id.objIdLong", is(4624352))) 
    .andExpect(jsonPath("$[2].id.objFKeyString", is("SomeOtherString"))); 

답변

0

당신은 '모든 요소'명령어를 사용할 수있는 하나 개의 요소가 예상 objIdLong을 가지고 있으며, 다른 요소가 objFKeyString 당신이 접근을 결합 할 수있는 예상했다 어디에서 오 탐지를 방지 할 수 있습니다. 이 같은

뭔가 이러한 주장은 반환 된 JSON만큼 진실한 것으로 간주됩니다

.andExpect(jsonPath('$.id[?(@.objIdLong == 533252 && @.objFKeyString == \'SomeString\')]').exists()) 
.andExpect(jsonPath('$.id[?(@.objIdLong == 642654252 && @.objFKeyString == \'ThisString\')]').exists()) 
.andExpect(jsonPath('$.id[?(@.objIdLong == 4624352 && @.objFKeyString == \'SomeOtherString\')]').exists()) 

에는 다음이 포함

  • objIdLong=533252objFKeyString="SomeString"
  • id 하위 문서를 가진 id 하위 문서 objIdLong=642654252objFKeyString="ThisString"
  • id 하위 문서는 objIdLong=4624352objFKeyString="SomeOtherString"
+0

재생 해 주셔서 감사합니다. 이것은 작동하지 않았다. "문자 리터럴에 너무 많은 문자가 있습니다." –

+0

@ user1518234 질문을 [MCVE] (https://stackoverflow.com/help/mcve)로 업데이트하거나 원하는 JSON을 적어도 포함 할 수 있습니다. 질문하다. 세부 사항이 없으면 질문에 대답하는 데는 추측이 필요합니다. – glytching

+0

미안하지만 MCVE로 업데이트하지 못했습니다. 나는이 일을하고 있지만 너무 길어서 그 고민을 잊어 버렸다. 앞으로 내 발견과 솔루션으로 내 게시물을 업데이트하는 것이 더 좋습니다. –

관련 문제