2017-10-16 97 views
0

這是響應(那種)RestAssured不能使containsString工作

{ 
    "Cats": [ 
     { 
     "Code": "XXXX", 
     "Ven": {   
      "Description": "Any" 
     }, 

     }, 
     "Rate": { 
      "Actual": { 
       "Amount": "XXX", 
       "Currency": "USD" 
      }, 
      "Token": "Cg..........................................", 

     { 
     "Code2": "2XXXX", 
     "Vend": { 
      "Code": "2X", 
      "Description": "aNY2" 
     }, 

      "Token": "Cg...................................", 

} 

我需要驗證,如果響應包含的令牌值,如果這個令牌值包含特定字符串,這是代碼

Response responseshop = given().header("Authorization", "Basic 
    XXXXXXXXXXX=").header("accept-version","2.0.0").header("Accept", 
    "application/xml"). 
      param("Location", "Geocode,XX.XXXXXX,-XX.XXXXXX"). 
      param("Pick", "2017-12-12"). 
      param("Drop", "2017-12-15").    
      get("/cats/shop?AppKey=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); 
     responseshop.then().log().all(). 
      statusCode(200).    
        body("root.Cats.Rate.Token", containsString("Cg")); 
      System.out.println("This is the Response"); 
      System.out.println(responseshop);    
      String Token =responseshop.path("root.Cats.Rate.Token"); 
      System.out.println("This is the Token"); 
      System.out.println(Token); 

順便說一句響應被打印出來,並它也傳送200個狀態驗證, 但林一遍一遍收到這個斷言錯誤:

java.lang.AssertionError: 1 expectation failed. 
XML path root.Cats.Rate.Token doesn't match. 
Expected: a string containing "Cg" 
Actual: 
Cg........................ 

即時通訊新的restassured,我錯過了什麼。 謝謝!

回答

0

我認爲,其中一個問題是,您有一個JSON響應,並且希望檢查xml內容,如您在「Accept」標頭中將其設置爲「application/xml」的標頭。試試「application/json」並檢查你的jsonpath,因爲它也是臭的。

如果你不能共享你的json,你可以嘗試通過http://jsonpath.com/評估並找到更正jsonpath,就好像你可以在cats數組下面有multile記錄一樣,它應該看起來像第一個elem:「Cats [0] ..Token「