我剛開始學習asp.net mvc,其中一個原因主要原因是遷移到TDD。如何對測試視圖進行單元/集成以檢測突發更改
我正在寫一個有報告的小型儀表板應用程序。在這個應用程序中,我有一個名爲ReportsController的主控制器,它現在只有一個方法,GetReport接受查詢並在查詢滿足特定條件時返回視圖,否則返回錯誤消息。
[HttpGet]
public ActionResult GetReport(string query)
{
//calls the QueueRep and gets back DataTable
ReportQuery reportQuery = new ReportQuery(query);
if (reportQuery.IsValidQuery)
{
queryRepository.ExecuteReportQuery(ref reportQuery);
}
else
{
return View("Error");
}
ViewData.Add("ResultDataTable",reportQuery.ResultDataTable);
return View();
}
我寫了2個單元測試具體步驟如下
public void GetReport_Should_Return_Error_View_For_Malicious_Query()
{
//Arrange
string query = "drop table userInfo";
var controller = CreateReportsController(query);
//Act
var result = controller.GetReport(query) as ViewResult;
//Assert
Assert.AreEqual(result.ViewName, "Error");
}
[Test]
public void GetReport_Should_Return_View_With_DataTable_For_Correct_Query()
{
//Arrange
StringBuilder sb = new StringBuilder();
sb.Append("SELECT Year(CreatedOn) as Year, Month(CreatedOn) as Month, Count(CREATEDON) as NewEmployers");
sb.Append("FROM dbo.UserInfo WHERE DefaultPurpose = 1 GROUP BY Year(CreatedOn), Month(CreatedOn)");
string query = sb.ToString();
var controller = CreateReportsController(query);
//Act
var result = controller.GetReport(query) as ViewResult;
//Assert
Assert.IsTrue(result.ViewData.ContainsKey("ResultDataTable"));
Assert.IsTrue(result.ViewData["ResultDataTable"].GetType() == typeof(System.Data.DataTable));
}
現在,由於與SSRS,服務器衝突/報告指着SSRS,而不是報告控制器,以便我將ReportsController的名稱更改爲MyReportsController。我使用重構進行名稱更改,並在測試項目中更改我的單元測試,並運行單元測試。一切安好。
但是現在當我運行實際的應用程序時,出現錯誤。基本上,必須將視圖的文件夾名稱從「報告」更改爲「MyReports」。我如何測試這些場景。僅使用硒等功能測試工具?或者我可以用不同的方式寫我的測試?