Я пытаюсь проверить действие Index
контроллера. Действие использует AutoMapper для сопоставления объекта домена Customer
с моделью просмотра TestCustomerForm
. Хотя это работает, меня беспокоит лучший способ проверить результаты, которые я получаю от действия Index
.
Действие индекса контроллера выглядит следующим образом:
public ActionResult Index()
{
TestCustomerForm cust = Mapper.Map<Customer,
TestCustomerForm>(_repository.GetCustomerByLogin(CurrentUserLoginName));
return View(cust);
}
И его TestMethod
выглядит так:
[TestMethod]
public void IndexShouldReturnCustomerWithMachines()
{
// arrange
var customer = SetupCustomerForRepository(); // gets a boiler plate customer
var testController = CreateTestController();
// act
ViewResult result = testController.Index() as ViewResult;
// assert
Assert.AreEqual(customer.MachineList.Count(),
(result.ViewData.Model as TestCustomerForm).MachineList.Count());
}
В методе CreateTestController
я использую Rhino.Mocks
, чтобы высмеять репозиторий клиентов и настроил его, чтобы вернуть клиента из SetupCustomerForRepository
. Таким образом, я знаю, что репозиторий вернет предполагаемого клиента, когда действие Index
вызывает _repository.GetCustomerByLogin(CurrentUserLoginName)
. Поэтому я считаю, что утверждение равного количества удовлетворяет требованиям IndexShouldReturnCustomerWithMachines
.
Все это говорит, что я обеспокоен тем, что я должен тестировать.
- Кажется самонадеянным бросать
result.ViewData.Model as TestCustomerForm
. Это действительно проблема? Это касается меня, потому что в этом случае я действительно не делаю разработку, основанную на тестах, и кажется, что я рассчитываю на конкретную реализацию, чтобы удовлетворить этот тест. - Есть ли более подходящие тесты для обеспечения правильного отображения?
- Должен ли я тестировать каждое отображаемое свойство из
TestCustomerForm
? - Есть ли более общие тесты действий контроллера, которые я должен делать?