问题描述
我正在使用@WebMvcTest 和 mockmvc mockmvc;
我正在尝试:
mockmvc.perform(get("/api/v2/developers/12"))
.andExpect(jsonPath("$.sportType").value("FOOTBAL"))
但我明白了:
java.lang.AssertionError: JSON path "$.sportType"
Expected :FOOTBALL
Actual :FOOTBALL
FOOTBAL - 是枚举值,我也尝试使用“FOOTBAL”:
.andExpect(jsonPath("$.sportType").value(SportType.FOOTBALL))
//OR
.andExpect(jsonPath("$.sportType").value(String.valueOf(SportType.FOOTBALL)))
//OR
.andExpect(jsonPath("$.sportType").value(Arrays.asList(SportType.FOOTBALL)))
我的 JSON 看起来如何:
{
"name": "JOHN","sportType": "FOOTBALL"
}
解决方法
由于响应是 JSON 字符串,而 sportType
是字符串类型,我建议将其作为字符串而不是枚举进行比较
andExpect(jsonPath("$.sportType").value("FOOTBALL"))
或者你也可以使用Matchers
andExpect(jsonPath("$.sportType",is("FOOTBALL")))