2014-09-02 52 views
9

İlkbahar mvc'de JSON belge yanıtında jsonPath ile nasıl başa çıkılacağını bulmakta güçlük çekiyorum. Belki de bu özel senaryo için jsonPath kullanmanın daha iyi bir yolu vardır. Bağlantı dizisinin "self" öğesinin bir öğesi olduğunu ve "self" nesnesinin "href" özniteliğinin de "/" değerine eşit bir "href" özniteliğine sahip olduğunu doğrulamak isterim. JSON yanıtı şöyle: Ben rel ettiğini görebileceğinizJSONPath ve yay mvc ile dizilerin dizilimini belirleme

{ 
    "links":[ 
     { 
     "rel":[ 
      "self" 
     ], 
     "href":"/" 
     }, 
     { 
     "rel":[ 
      "next" 
     ], 
     "href":"/1" 
     } 
    ] 
} 

Bu çalıştı [0] kendini var ama ben bağlantılar dizisi ve rel dizide kendini nerede güvenmeyin tercih ederim ve aslında href'in [rel] [self] [/] olduğu bağlantıda ne olduğunu test edin. Herhangi bir fikrin var mı?

@Before 
    public void setup() { 
    MockitoAnnotations.initMocks(this); 
    mockMvc = MockMvcBuilders.standaloneSetup(welcomeController).build(); 
    } 

    @Test 
    public void givenRootUrl_thenReturnLinkToSelf() throws Exception { 
    mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk()) 
     .andExpect(jsonPath("$.links[0].rel[0].", is("self"))); 
    } 

cevap

9

Nasıl birkaç andExpect yöntemleri eklemeye ne dersiniz? Benzer bir şey:

mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk()) 
    .andExpect(jsonPath("$.links[0].rel[0]", is("self"))) 
    .andExpect(jsonPath("$.links[0].href[0]", is("/")); 
+0

Dizinin kodlarını kodlamadan (sipariş farklıysa) bunu yapmanın bir yolu olup olmadığını biliyor musunuz? –

+0

Kevin, regexp'inizi jsonpath'inizde kullanabilirsiniz, bu $ .links [? (@ Rel = ~ /.*self/i)] veya bunun gibi bir şey. Lütfen, buradaki belgelerin tamamını kontrol edin: https://github.com/json-path/JsonPath –