Модульное тестирование приложений ASP.Net MVC 4 - PullRequest
60 голосов
/ 10 февраля 2012

Я понимаю, что это дубликат примерно из 20 различных сообщений, но ни один из них не относится к MVC4, и ни один из тех, что я видел, действительно не отвечает на все мои вопросы. Пока мой первый набег вмир TDD разочаровывает, если не сказать больше.Большая часть того, что я пытался сделать, кажется несовместимой с MVC 4 или почти невозможной без использования плохо документированных сторонних библиотек, которые я пока не совсем понимаю.

То, что я хочу иметь, это писатьтесты, которые будут проверять мои действия контроллера, модель, которую они передают, и представление , в которое отправляется модель.Я хочу проверить, существует ли представление, я хочу проверить, является ли передаваемая модель правильным типом для представления, я хотел бы каким-то образом проверить, будет ли она обрабатываться правильно.Я также хочу иметь возможность проверить свои маршруты.И тестирование фильтров аутентификации?

Мне нужен способ модульного тестирования ASP.Net MVC, который оставит очень мало шансов.

Тестирование выходных данных модели Action кажется достаточно простым, но тестированиепредставления были почти невозможны.

Итак, вот мой список вопросов:

  1. Как только я протестирую действие и получу результат действия, как мне проверить, чтобы увидеть,нужное представление существует?
  2. Как проверить мои маршруты?
  3. Как проверить, правильно ли обрабатываются мои представления?
  4. Что на самом деле является "наилучшей практикой" для тщательного модульного тестирования ASP.Net MVC 4?
  5. Как выполнить модульное тестирование проверки подлинности форм?
  6. Как мне выполнить модульный тест фильтров действий?

Я бы предпочел использовать встроенные тестовые проекты Visual Studio, но если ядолжен использовать NUnit, я должен.Мне просто нужно убедиться, что все сделано правильно.

Заранее благодарю за ваши ответы.

РЕДАКТИРОВАТЬ: Я также не мог заставить NUnit работать с моим приложением MVC4 из-за несовместимости некоторых сверсия .NET одной из сборок была скомпилирована в.

1 Ответ

59 голосов
/ 29 марта 2012
  1. Проверка наличия вида
  2. http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx/
  3. http://blog.davidebbo.com/2011/06/unit-test-your-mvc-views-using-razor.html
  4. см. Ниже
  5. Как выполнить модульное тестирование моего контроллера ASP.NET MVC, который использует FormsAuthentication?
  6. Как проверить фильтры действий в ASP.NET MVC?

нет. 4: это сложный вопрос. Как можно проверить что-либо полностью ? Лично я на самом деле не проверяю представления, кроме как с тремя основными браузерами и двумя моими глазами, так как сложно протестировать сайт и все его компоненты без его фактического использования. У вас есть JavaScript, стилизация CSS, и она выглядит по-разному в разных браузерах. Таким образом, мне кажется, что мы проверяем представление, которое является незначительной частью общего удобства вашего сайта. Если вы разрабатываете простой табличный отчет с финансовыми данными, тщательно протестируйте эти данные. Если ваш взгляд является основой для модного сайта Ajax, возможно, не тестируйте HTML столько, сколько опыт. Я знаю, что это не простой, простой ответ, но приемлемый уровень охвата всегда включает компромиссы.

...