У меня есть метод, который вызывается из кода формы Windows, он принимает string[]
имя файла. Проблемы, которые я чувствую себя виноватыми при написании юнит-теста для ReadFile()
. Так как у меня нет способа издеваться над именем файла. Пожалуйста, помогите, если есть способ издеваться над именем файла
Это метод
public Results ImportData(string[] fileNames)
{
List<ListViews> listViewDataItems = new List<ListViews>();
try
{
foreach (var filename in fileNames)
{
var readResults = ReadFile(filename);//unit test for this
var mapResults = MappingData(readResults);
var listViewDataItemsMiniBucket = ImportToDatabase(mapResults, filename);
listViewDataItems.Add(listViewDataItemsMiniBucket);
}
}
catch (Exception ex)
{
ErrorLogger.Instance.SendErrorToFile(ex);
return new Results
{
DescripText = ex.ToString(),
Success = false
};
}
return new Results { Success = true, Objects = listViewDataItems };
}
Функция FileName
public DataSet ReadFile(string filePath)
{
using (var stream = new FileStream(filePath, FileMode.Open))
{
var reader = GetExcelDataReaderExtension(stream, filePath);
using (reader)
{
return reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = _ => new ExcelDataTableConfiguration()
{
FilterRow = rowReader => rowReader.Depth > Constants.HeaderIndex
}
});
}
}
}
Юнит тест ниже
[Fact]
public void ReadTest()
{
Import test = new Import();
var filePath = Directory.GetCurrentDirectory() + "\\Files\\";
var fileName = "Refund Cases Cancelled in November 2016 - filenameCopy.xlsx";
var file = filePath + fileName;
var readResults = test.ReadFile(file);
Assert.False(readResults.HasErrors);
}
Юнит-тест ImportData ()
[Fact]
public void ImportData()
{
Import test = new Import();
var filePath = Directory.GetCurrentDirectory() + "\\Files\\";
var files = new[]
{
filePath+"Refund Cases Cancelled in November 2016 - Copy - Copy.xlsx",
filePath+"Refund Cases Cancelled in November 2016 - Copy - Copy.xlsx"
};
var results = test.ImportData(files).Success;
Assert.True(results);
}