2017-03-27 18 views
7

Yanıtımın JSON içinde olduğunu, yani 'un veya 'un belirli bir alanı içermediğinden emin olabildiğinden nasıl emin olabilirim?REST'de Güvenceli, bir alanın mevcut olup olmadığını nasıl kontrol edebilirim?

when() 
    .get("/person/12345") 
.then() 
    .body("surname", isPresent()) // Doesn't work... 
    .body("age", isNotPresent()); // ...But that's the idea. 

benim JSON alanları yaş ve soyadı ihtiva verip vermeyeceğinizi oluşturması için bir yol arıyorum.

cevap

0

Böyle eşittir (null) kullanabilirsiniz: alanına da mevcut değil

.body("surname", equals(null))

Eğer alan null whetever null

+2

Bu ayrıca bir JSON alanı null değerine ayarlandığında da eşleşir. –

+0

Haklısınız ama null alırsa temelde aynı –

0

Kontrol olacaktır. Örneğin:

Response resp = given().contentType("application/json").body(requestDto).when().post("/url"); 
    ResponseDto response = resp.then().statusCode(200).as(ResponseDto.class); 
    Assertions.assertThat(response.getField()).isNotNull(); 
14

Sen hamcrest yanı JSON dizeleri üzerinde hasKey() eşleştirme aracı kullanabilirsiniz.

when() 
    .get("/person/12345") 
.then() 
    .body("$", hasKey("surname")) 
    .body("$", not(hasKey("age"))); 
+0

bu doğru cevap, neden bu şekilde işaretlemek değil? –

İlgili konular