Тестирование пользовательского интерфейса MVC с WatiN и ввод параметра в контроллер

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

Тем не менее, я пытаюсь написать небольшие модульные тесты пользовательского интерфейса, которые используют WatIn. В настоящее время я работаю только над подмножеством пользовательского интерфейса.

У меня есть контроллер под названием Product вместе со связанными с ним представлениями. Контроллер получает ProductRepository через конструктор.

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

Мой тест настроен по принципу;

using (var ie = new IE("http://localhost:2904/Product"))
{
     ...
}

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

Или я в корне ошибся, и я могу использовать WatiN только для своей базы данных, и мне нужно запрограммировать его, чтобы выбрать член каждого типа продукта из базы данных, и таким образом протестировать?


person Matt    schedule 27.08.2014    source источник


Ответы (1)


Я думаю, как вы предлагаете, вы выбираете не тот конец проблемы. Если я правильно понимаю, вам нужен не UI-тест и Watin, а интеграционные тесты. Я бы предложил создать экземпляр контроллера, вводить репозитории по мере необходимости и издеваться над другими зависимостями. Чем вы можете переключать репозитории и так далее.

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

Вроде нормально или я вас совсем не понимаю?

person Jan Barta    schedule 27.08.2014
comment
Нет, вы меня хорошо поняли :-) Я просто надеялся создать пользовательский интерфейс, а затем посмотреть на домен, а затем на репозитории, поскольку бизнес хочет увидеть прототип как можно скорее. Похоже, им придется подождать - person Matt; 28.08.2014
comment
Я это понимаю. Что ж, вы можете добавить некоторую конфигурацию и использовать репозитории изменений для фиктивных, если это необходимо. - person Jan Barta; 28.08.2014