Я только начал изучать 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.Я использовал refactor для изменения имени, а также изменил свои юнит-тесты в тестовом проекте и запустил юнит-тесты.Все хорошо.
Но теперь, когда я запустил реальное приложение, я получил ошибку.По сути, имя папки представлений пришлось изменить с «Отчеты на MyReports».Как я могу проверить такие сценарии.Используются ли только инструменты функционального тестирования, такие как селен?Или я мог бы написать свои тесты по-другому?