Простите за отсутствие знаний о Rails, а также за то, что я рассказал вам, что вы уже знаете о rails, но я надеюсь представить вещи в формате сравнения для других пользователей.
В Rails есть 3 типа тестов.Модульные, функциональные и интеграционные.
Модульные тесты тестируют ваши модели
Функциональные тесты для ваших контроллеров
Интеграционные тесты для тестирования потока между действиями контроллера
Эта парадигма, по-видимому, преподается с самого начала с помощью rails.
Однако в мире .NET MVC методы тестирования не изложены так, как в Rails.
Многие разработчики напишутМодульные тесты на их контроллерах так же, как вы пишете модульные тесты на своих моделях в рельсах.Вы в основном вызываете метод (Controller Action) и получаете объект обратно из метода.Затем вы можете утверждать, что он имеет ожидаемые значения.Делать это - боль в заднице, потому что вы должны издеваться над таким дерьмом (HttpContext и т. Д.).Плюс, это не функциональный тест.Вы тестируете только один метод, в отличие от тестирования функциональности приложения.
В Rails вы не пишите модульный тест на своем контроллере, вы фактически делаете веб-запрос и получаете веб-ответ,Вы можете проверить код состояния, файлы cookie и т. Д. Вы тестируете систему из конца в конец.
Есть несколько способов сделать это в .NET MVC
1) Стивен Сандерсонесть небольшой инструмент, чтобы помочь с этим.
http://blog.stevensanderson.com/2009/06/11/integration-testing-your-aspnet-mvc-application/
Когда я впервые увидел это и начал использовать его, я подумал, что это было здорово, но я столкнулся с проблемами.
2) RestSharp + NUnit - этомое нынешнее предпочтение делать подобные тесты.Это позволяет вам составить веб-запрос и получить ответ довольно легко.С помощью нескольких общих методов вы можете двигаться довольно быстро с помощью restsharp.NUnit предоставит вам необходимые вам утверждения.Я просто делаю запрос к моему локальному серверу IIS и утверждаю различные элементы, которые я ожидаю в ответе.На самом деле вы не сможете проверить, какая модель назначена представлению, как вы можете в рельсах, но для меня это не проблема.
Если вы привыкли к RSpec, то вы можете получить SpecFlow, которыйдолжно быть похоже.
Rails строит тестирование прямо в фреймворке и является первоклассным гражданином.Жаль, что это не так в .NET MVC.
Надеюсь, это поможет.