如何使用带有EPPlus的模拟进行单元测试?

时间:2018-10-18 15:47:27

标签: c# unit-testing mocking epplus

我正在为项目使用EPPLus,并且试图在内存中创建一个Excel工作表来对其进行模拟。

我用于单元测试的类有一个方法

public ExcelPackage GetExcelPackage()
{
    using (var package = new ExcelPackage())
    {
        ExcelWorksheet returnWorksheet = package.Workbook.Worksheets.Add("worksheet");
        returnWorksheet.Cells[1, 1].Value = "043";
        returnWorksheet.Cells[1, 2].Value = "21677";
        returnWorksheet.Cells[1, 3].Value = "100";
        returnWorksheet.Cells[1, 4].Value = String.Empty;
        returnWorksheet.Cells[1, 5].Value = "12292016";
        returnWorksheet.Cells[1, 6].Value = String.Empty;
        return package;
    }
}

在我的InputFileController中,调用package.Workbook.Worksheets.First时出现空对象错误。

public static IInputFileRepository ReadExcelFile(IFileDataSource excelFileDataSource)
    {
        FileInfo fileToRead = new FileInfo(excelFileDataSource.InputFile);
        List<string> lines = new List<string>();
        ExcelPackage package = excelFileDataSource.GetExcelPackage();
        ExcelWorksheet worksheet = package.Workbook.Worksheets.First();

知道我可能做错了什么吗?

2 个答案:

答案 0 :(得分:0)

因此,看来我有一个不相关的错误。不是让我的IFileDataSource返回ExcelPackage,而是让它返回文件名,然后使用EPPlus打开并从InputController读取该文件。

passowrd

答案 1 :(得分:0)

空引用错误是由于对象的处置而发生的-这是由于代码块周围的using语句引起的。

我把我的答案放在这里,以防万一有人来问到根本原因。