Как я могу провести модульное тестирование, используя макет с EPPlus? - PullRequest
0 голосов
/ 18 октября 2018

Я использую 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 голосов
/ 08 апреля 2019

Ошибка нулевой ссылки возникает из-за удаления объекта - что связано с оператором using вокруг блока кода.

Я отвечу здесь, если кто-нибудь придет и заинтересуется корнемпричина.

0 голосов
/ 18 октября 2018

Итак, похоже, у меня была не связанная ошибка.Вместо того, чтобы мой 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++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...