如何在EPPlus中使用mock进行单元测试?

问题描述 投票:1回答:2

我正在使用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时,我得到一个null对象错误。

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();

知道我可能做错了吗?

c# unit-testing mocking epplus
2个回答
0
投票

所以,看起来我有一个无关的bug。我没有让我的IFileDataSource返回一个ExcelPackage,而是让它返回文件名,并使用EPPlus从我的InputController打开并读取该文件。

 public static IInputFileRepository ReadExcelFile(IFileDataSource excelFileDataSource)
    {
        FileInfo fileToRead = new FileInfo(excelFileDataSource.InputFile);
        List<string> lines = new List<string>();
        var fileInfo = new FileInfo(excelFileDataSource.InputFile);
        using (var package = new ExcelPackage(newFile: fileInfo))
        {
            ExcelWorksheet worksheet = package.Workbook.Worksheets.First();
            for (int rowIndex = 2; rowIndex <= worksheet.Dimension.End.Row; rowIndex++)

0
投票

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

我在这里给出答案,以防任何人来到这里并想知道根本原因。

© www.soinside.com 2019 - 2024. All rights reserved.