Можно ли вызвать методы контроллера ASP.NET MVC из теста в работающем веб-приложении MVC?

Я изучаю ASP.Net MVC и прочитал, что модульное тестирование легко выполнить, так как можно создавать экземпляры контроллеров и вызывать их методы без необходимости развертывания на веб-сервере, а также легко имитировать зависимые объекты и т. Д. (см. http://msdn.microsoft.com/en-us/library/gg416511%28VS.98%29.aspx и другие ссылки).

Также возможно запускать тесты уровня приемки в приложении MVC через браузер, используя Selenium или Waitin, используя вашу любимую платформу для создания и контроля тестов.

Что я хотел бы знать, так это то, возможно ли выполнить ATDD-тесты на уровне приемочных тестов, вызывая методы контроллера в развернутом, работающем приложении MVC, например, из Specflow, вместо того, чтобы тестировать через пользовательский интерфейс?

Или, в целом, возможно ли программно вызвать API приложения ASP.Net MVC из теста?

Кажется, что существует разрыв в том, что можно тестировать между модульным тестированием и тестированием пользовательского интерфейса на основе браузера. Кто-нибудь смог преодолеть этот разрыв?

1 ответ

Решение

Ваш вопрос не ясен, но если вы спрашиваете, что я думаю, вы:

Контроллеры MVC (как правило) подчиняются REST.

Вы можете вызвать любое действие на контроллере (через веб-сервер, такой как IIS), отправив ему HTTP-запрос. Он вернет HTTP-ответ, содержащий соответствующие данные и тип данных (HTML, json, XML и т. Д.). Так что да, вы можете программно вызывать контроллер как API (если под API вы имеете в виду что-то, на что вы отправляете HTTP-запросы и получать HTTP-ответы), поэтому да, вы можете протестировать контроллер без использования пользовательского интерфейса.

Другие вопросы по тегам