我正在为Spring中的端点编写单元测试,它发送一个csv文件作为响应。我可以进行检查,例如检查respone的状态和内容类型,但是如何比较CSV的内容?我试图将响应转换为字符串并进行比较但没有任何成功。任何人都可以指出我正确的方向吗?
以下是我的尝试:
public void testDownloadCSV() throws Exception {
RequestBuilder request = MockMvcRequestBuilders.get
(getRequestMapping("/downloadCSV/" + ID))
.contentType(contentType);
ResultActions result = getMockMvc().perform(request);
String csvString = "CSV Data goes here";
String resultString=content().toString();
if (log.isDebugEnabled()) {
result.andDo(print());
Assert.assertTrue(csvString.equals(resultString));
}
// tests:
result.andExpect(status().isOk()).andExpect(content().contentType
(contentType));
}
答案 0 :(得分:0)
在比较字符串内容时,不确定您看到了什么样的差异。常见问题是缺少/存在空白字符。
如果是这种情况,请使用名为Hamcrest
的Java库以这种方式比较字符串:
assertThat(actualContent, equalToIgnoringWhiteSpace(expectedContent));
如果您的逻辑不是对订单敏感的,我担心您需要先将CSV字符串解析为Lists,然后对它们进行排序并进行比较。