ASP.NET MVC - тестирование страницы для привязки модели - PullRequest
3 голосов
/ 17 июля 2009

У меня есть модульные тесты, покрывающие мои связующие модели. Я создаю ModelBindingContext и заполняю ValueProviderDictionary своими тестовыми значениями. Я уверен, что, как только мой контроллер получит модель, все будет покрыто тестированием, и правильные вещи происходят. Я также уверен, что если BindingContext верен, моя модель будет привязана правильно. В чем я не уверен, так это в том, что мой View при публикации будет правильно заполнять BindingContext.

Я начал писать тесты WatiN, которые заполняют формы, отправляют их обратно и проверяют получившийся вид. Это нормально, но кажется очень ... косвенным. Например, страница с надписью «Ваш заказ был сохранен» после нажатия кнопки «Отправить» - мне нужно будет зайти в базу данных, чтобы проверить, правильно ли он был сохранен. У меня уже есть тесты, охватывающие это, когда модель, передаваемая моему контроллеру, равна x, y сохраняется в базе данных. Почему я повторяю этот код в тесте представления?

Что мне действительно нужно, так это заполнить представление, нажать «Отправить» и проверить либо (a) BindingContext, либо (b) модель, возвращенную из ModelBinder.

Есть какие-нибудь практики, как это делать?


Просто хотел добавить, что это будет в дополнение к тестам WatiN. У меня сейчас ~ 50 тестов WatiN (с большим количеством добавлений), и если бы я мог сделать выше без WatiN, это удалило бы только несколько тестов. Я буду продолжать использовать WatiN для того, для чего он хорош, но я чувствую, что сейчас злоупотребляю им для тех нескольких тестов.

Ответы [ 2 ]

3 голосов
/ 10 октября 2009

Вы можете попробовать MvcIntegrationTest Стива Сандерсона из http://blog.codeville.net/2009/06/11/integration-testing-your-aspnet-mvc-application/.

0 голосов
/ 15 сентября 2009

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

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

...