2017-03-27 12 views
7

मैं यह कैसे सुनिश्चित कर सकता हूं कि मेरी प्रतिक्रिया, मान लीजिए कि यह JSON में है, या तो में या में कोई विशिष्ट फ़ील्ड नहीं है?आरईएसटी आश्वासन में, मैं कैसे जांच सकता हूं कि कोई फ़ील्ड मौजूद है या नहीं?

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

मैं एक तरह से तलाश कर रहा हूँ बात पर जोर देना कि मेरे JSON उम्र और उपनाम हैं या फिर नहीं होगा क्षेत्रों।

उत्तर

0

आप इस तरह बराबरी (शून्य) का उपयोग कर सकते हैं: क्षेत्र मौजूद नहीं है

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

यदि यह हो जाएगा अशक्त

+2

यह जेएसओएन फ़ील्ड पर भी शून्य से मेल खाता है। –

+0

आप सही हैं लेकिन अगर यह शून्य हो जाता है तो यह मूल रूप से वही –

0

चेक whetever क्षेत्र रिक्त है। उदाहरण के लिए:

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

आप Hamcrest JSON तार पर hasKey() Matcher रूप में अच्छी तरह उपयोग कर सकते हैं।

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

यह सही उत्तर है, इसे इस तरह चिह्नित क्यों न करें? –

संबंधित मुद्दे

 संबंधित मुद्दे