Что может сделать простой модульный тест, чтобы подтвердить, что существует определенный контроллер, если я использую Rhino Mocks, NUnit и ASP.NET MVC 2? Я пытаюсь склонить голову к концепции TDD, но я не могу понять, как будет выглядеть простой тест типа «Controller XYZ Exists». Кроме того, что было бы единичным тестом, чтобы проверить результат действия с точки зрения?TDD контроллер с ASP.NET MVC 2, NUnit и Rhino Mocks
ответ
Убедитесь, что контроллер существует
Возникли юнит-тесты на своих действиях является сильным предположение, что контроллер существует, который приводит нас к:
Что будет с модульным тестом выглядеть как test a Действие Результат с экрана
Вот пример:
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, а также test your routes.
Почему вы хотите проверить, существует ли контроллер? Что вы должны сделать, так это проверить поведение контроллера. Ваш контроллер - это проверенный код, и вы на него накладываете некоторое ожидание, а затем утверждаете, оправданы ли ожидания или нет.
Существует много пошаговых инструкций о том, как делать TDD с помощью ASP.NET MVC. Вы можете начать, например, здесь
Я видел это, но это неправильно. Вы не должны утверждать более одного раза за тест. Кроме того, он больше ориентирован на тестирование репозитория, чем на простой тест контроллера. –
Один утверждают за тест? Это может иметь смысл в каком-то контексте в далекой галактике, но для тестов Controller это мало смысла imho. –
- 1. Unity Nunit & Rhino Mocks
- 2. Rhino Mocks & NUnit с ошибкой VSTO 2010
- 3. asp.net mvc rhino mocks mocking httprequest values
- 4. Rhino Mocks Вызов вместо записи в NUnit
- 5. Какие ресурсы люди используют для TDD в ASP.NET MVC с использованием Rhino Mocks?
- 6. C# Rhino mocks - Это подходящее использование mocks?
- 7. Rhino Mocks nant error
- 8. TDD с Mocks все яйца в корзине?
- 9. VB.NET и NUnit - TDD
- 10. Rhino Mocking и TDD с устаревшим кодом
- 11. Rhino Commons и Rhino Mocks Справочные документы?
- 12. Mocking действия контроллера в ASP.NET MVC2 с Rhino Mocks
- 13. Rhino Mocks: Mocking HttpRequestBase.Files
- 14. ASP.Net MVC - Rhino Mocks - ожидаемые параметры вызова метода
- 15. Стыковка блокирующего вызова с Rhino Mocks
- 16. Rhino Mocks - Использование Arg.Matches
- 17. Rhino Mocks, Интерфейсы и свойства
- 18. ASP.Net MVC TDD с использованием Moq
- 19. Rhino Mocks Restub function
- 20. Rhino Mocks не бросает исключение
- 21. Исключение Rhino mocks с CompositionContainer
- 22. Rhino Mocks Использование
- 23. Получение DRY с Rhino Mocks
- 24. rhino mocks stub history
- 25. Как Rhino-Mocks насмехается?
- 26. AssertWasCalled in rhino mocks
- 27. rhino mocks call
- 28. Mocking HttpPostedFileBase с Rhino Mocks
- 29. Rhino Mocks 'Expect' с FakeItEasy
- 30. Смысловые коллекции с Rhino Mocks
Что еще более важно, я использую ASP.NET MVC 2. –
Должны ли мы предположить, что ваши контроллеры зарегистрированы во время выполнения? В этом случае вам не нужен тест интеграции вместо единичного теста? –