在许多C#.NET WebApplications中,用户需要将数据下载为Excel文件。
要创建/管理我使用的Excel电子表格:EPPlus。
要打开Excel文件,我使用并推荐:Microsoft.Office.Interop.Excel。
在MVC网络应用程序中,我可以下载Excel文件:
public ActionResult DownloadExcell()
{
byte[] report = _codeManager.CreateExcel();
return BinaryResponseReport(report);
}
private ActionResult BinaryResponseReport(byte[] report)
{
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=FooBar.xlsx");
Response.BinaryWrite(report);
Response.End();
return RedirectToAction("Index");
}
但是在测试_codeManager.CreateExcel()
功能时,我不想一遍又一遍地遍历Web应用程序的所有各个步骤,以获得下载Excell功能。
所以在解决方案的UnitTest项目中。我添加了一个TestMethod:
[TestMethod]
public void TestExcellGeneration()
{
byte[] report = _codeManager.CreateExcel();
OpenExcelFromTempFile(excelFileBytes);
}
private void OpenExcelFromTempFile(byte[] data)
{
string tempPath = System.IO.Path.GetTempFileName();
System.IO.File.WriteAllBytes(tempPath, data);
Application excelApplication = new Application();
_Workbook excelWorkbook;
excelWorkbook = excelApplication.Workbooks.Open(tempPath);
excelApplication.Visible = true;
}
运行此单元测试会将excell写入TempFile。
我的问题: 我应该在我的解决方案中添加这样的“单元测试”吗? 是否有替代或更好的方法来测试此功能?
因为我实际上并没有测试功能
Arrange
Act
Assert
方式。