5 回答

TA貢獻1825條經驗 獲得超6個贊
由于您使用的是 MockMvc 而不是返回 withandReturn()
您可以使用 JSONPath 支持,例如:
mvc.perform( MockMvcRequestBuilders .get("/resource") .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.jsonPath("$.length").value(2))

TA貢獻1951條經驗 獲得超3個贊
如果你想獲得 json 數組長度,就是這樣,
1.如果你導入org.json.simple.JSONArray
你可以使用JSONArray.size()
2.如果你導入org.json.JSONArray
你可以使用JSONArray.length()

TA貢獻1995條經驗 獲得超2個贊
假設您的回應是這樣的:
{
result : [
{
"field1": "a",
"field2": "b"
},
{
"field1": "c",
"field2": "d"
}
]
}
在這種情況下,您將使用 MockMvc 編寫如下斷言:
mvc.perform(MockMvcRequestBuilders
.get("/resource")
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.result.length()").value(2))

TA貢獻1780條經驗 獲得超5個贊
使用com.jayway.JsonPath(你已經通過 spring-boot-starter-test 擁有了這個類)
Integer length = JsonPath.read(result.getResponse().getContentAsString(), "$.length()");
添加回答
舉報