我试图验证SpringMVC Web服务返回的JSON结果中的LocalDate对象,但我不知道如何验证。
目前我总是遇到如下Assert错误:
java.lang.AssertionError:JSON路径“$[0].startDate”预期值:〈<2017-01-01>[2017,1,1]〉是一个很好的例子。
我的测试的重要部分张贴在下面。有什么想法如何修复测试通过?
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
public class WebserviceTest {
@Mock
private Service service;
@InjectMocks
private Webservice webservice;
private MockMvc mockMvc;
@Before
public void before() {
mockMvc = standaloneSetup(webservice).build();
}
@Test
public void testLocalDate() throws Exception {
// prepare service mock to return a valid result (left out)
mockMvc.perform(get("/data/2017")).andExpect(status().isOk())
.andExpect(jsonPath("$[0].startDate", is(LocalDate.of(2017, 1, 1))));
}
}
Web服务返回一个视图对象列表,如下所示:
public class ViewObject {
@JsonProperty
private LocalDate startDate;
}
[编辑]
另一个尝试是
.andExpect(jsonPath("$[0].startDate", is(new int[] { 2017, 1, 1 })))
这导致了
java.lang.AssertionError:JSON路径“$[0].startDate”预期值:是[<2017>,<1>,<1>]但是:是〈[2017,1,1]〉
- [edit 2]* 返回的startDate对象的类型似乎是:
net.minidev.json.JSONArray
5条答案
按热度按时间tvokkenx1#
这就是要走的路。感谢“阿米特·K·比斯特”为我指明了正确的方向
ds97pgxw2#
JSON响应中的LocalDate将类似于“startDate”:
因此,您应该检查每个属性,如下所示:
unftdfkk3#
这应该通过:
rseugnpd4#
因为它需要一个值列表,所以可以这样使用它。
x6492ojm5#
我认为在那个层次上你验证的是Json而不是解析的对象,所以你有一个字符串,而不是一个LocalDate。
因此,基本上可以尝试在以下代码中更改代码: