下面是一个java函数的单元测试用例:
def "should generate claims error file"(){
given:
def tempFile = new TempFile()
def excelErrorRecord = new ExcelErrorRecord(row: 5, col: 4, message: "Test Message")
HashMap<String, List<ExcelErrorRecord>> errorRecords = new HashMap<>();
errorRecords.put("Medical",[excelErrorRecord])
def fileInputStream = Mock(FileInputStream)
def workBook = Mock(Workbook)
def file = Mock(File)
and:
tempFile.getFile() >> file
file.length() >> 100
tempFile.getFile().getAbsolutePath() >> "Temp File.xlsx"
new FileInputStream(tempFile.getFile().getAbsolutePath()) >> fileInputStream
new XSSFWorkbook(fileInputStream) >> workBook
when:
service.generateClaimsErrorFile(errorRecords, tempFile)
then:
noExceptionThrown()
}
字符串
本测试用例将执行以下java函数:
try (FileInputStream fis = new FileInputStream(tempFile.getFile().getAbsolutePath());
Workbook workbook = new XSSFWorkbook(fis))
{}
catch(){}
型
上面的测试用例是在Workbook workbook = new XSSFWorkbook(fis)
行抛出org.apache.poi.EmptyFileException
。我如何解决这个问题,这个问题的原因是什么?
1条答案
按热度按时间0wi1tuuw1#
不要试图模仿
File
或FileInputStream
。只需使用Spock的@TempFile
扩展名来设置一个包含必要内容的临时文件。这看起来像你期望它被嘲笑
字符串
然而,这不是它如何工作。
尝试一些沿着的东西,因为我对ApachePOI不熟悉,这个例子可能不起作用,但它应该可以让您开始。
型