TDD контроллер с ASP.NET MVC 2, NUnit и Насмешками Носорога

На что простой модульный тест был бы похож, чтобы подтвердить, что определенный контроллер существует, если я использую Насмешки Носорога, NUnit и ASP.NET MVC 2? Я пытаюсь перенести голову вокруг понятия TDD, но я не вижу, чтобы выяснить, как простой тест как "Контроллер, XYZ Существует", посмотрел бы. Кроме того, на что модульный тест был бы похож для тестирования Результата Действия от представления?

6
задан smdrager 15 April 2011 в 20:44
поделиться

2 ответа

Подтверждение существования контроллера

Наличие модульных тестов для его действий является убедительным предположением о существовании контроллера, что приводит нас к следующему:

Как будет выглядеть модульный тест для тестирования Результат действия вне представления

Вот пример:

public class HomeController: Controller
{
    private readonly IRepository _repository;
    public HomeController(IRepository repository)
    {
        _repository = repository;
    }

    public ActionResult Index()
    {
        var customers = _repository.GetCustomers();
        return View(customers);
    }
}

И соответствующий модульный тест:

[Test]
public void HomeController_Index_Action_Should_Fetch_Customers_From_Repo()
{
   // arrange
   var repositoryStub = MockRepository.GenerateStub<IRepository>();
   var sut = new HomeController(repositoryStub);
   var expectedCustomers = new Customer[0];
   repositoryStub
       .Stub(x => x.GetCustomers())
       .Return(expectedCustomers);

   // act
   var actual = sut.Index();

   // assert
   Assert. IsInstanceOfType(typeof(ViewResult), actual);
   var viewResult = (ViewResult)actual;
   Assert.AreEqual(expectedCustomers, viewResult.ViewData.Model);
}

MVCContrib имеет несколько замечательных функций, позволяющих имитировать HttpContext, а также тестировать ваши маршруты .

11
ответ дан 8 December 2019 в 17:20
поделиться

Почему вы хотите проверить, существует ли контроллер? Что вам нужно сделать, так это протестировать поведение контроллера. Ваш контроллер - это тестируемый код, и вы возлагаете на него определенные ожидания, а затем утверждаете, оправданы ли ожидания.

Существует много пошаговых руководств о том, как выполнять TDD с помощью ASP.NET MVC. Вы можете начать, например, здесь

http://codebetter.com/blogs/jeffrey.palermo/archive/2008/03/09/this-is-how-asp-net-mvc-controller-actions-should-be -unit-Test.aspx

3
ответ дан 8 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: