2017-07-27 73 views
0

我想從JSON數組中提取值並放心使用jsonPath。其他保證:從JSON數組中提取值

例JSON響應:

{ 
    "notices": [], 
    "errors": [ 
     { 
      "code": "UNAUTHORIZED" 
     } 
    ] 
} 

電流測試是如下:

@Test(dataProvider = "somePayLoadProvider", dataProviderClass = MyPayLoadProvider.class) 
public void myTestMethod(SomePayload myPayload) { 
    Response r = given(). 
      spec(myRequestSpecification). 
      contentType(ContentType.JSON). 
      body(myPayload). 
      post("/my-api-path"); 

    List<String> e = r.getBody().jsonPath().getList("errors.code"); 
    assertEquals(e, hasItem(MyErrorType.UNAUTHORIZED.error())); 
} 
然而

,我不斷收到[]圍繞我的錯誤代碼。我只是喜歡這個價值。

java.lang.AssertionError: expected 
[a collection containing "UNAUTHORIZED"] but found [[UNAUTHORIZED]] 

Expected :a collection containing "UNAUTHORIZED" 
Actual :[UNAUTHORIZED] 

回答

0

顯然這只是我沒有正確使用assert()方法。

改變

assertEquals(e, hasItem(MyErrorType.UNAUTHORIZED.error()));

assertTrue(e.contains(MyErrorType.UNAUTHORIZED.error()));

了JSON解析正確完成一個ArrayList<String>