单元测试在Spring中下载CSV

时间:2016-03-14 15:52:47

标签: java unit-testing spring-mvc csv spring-boot

我正在为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));

}

1 个答案:

答案 0 :(得分:0)

在比较字符串内容时,不确定您看到了什么样的差异。常见问题是缺少/存在空白字符。

如果是这种情况,请使用名为Hamcrest的Java库以这种方式比较字符串:

assertThat(actualContent, equalToIgnoringWhiteSpace(expectedContent));

如果您的逻辑不是对订单敏感的,我担心您需要先将CSV字符串解析为Lists,然后对它们进行排序并进行比较。