Я читал о MVC, в котором авторы предполагают, что тестируемость является одними из главных преимуществ MVC. Они идут для сравнения его с ASP.NET WebForms и как трудный это должно протестировать код позади в WebForms.
Я действительно понимаю, что это трудно, но кто-то может объяснить, как модульные тесты были записаны в тестовый код позади логики в былые времена?
Код программной части — это простые методы в классе (единственное отличие от другого класса заключается в том, что этот класс наследует от объекта Page)
Так что он тестируем. большинство проблем возникает из-за того, что методы были тесно связаны с элементами управления web.ui, такими как сетка; их было не так легко подделать. Если вы не подделывали элементы управления пользовательского интерфейса, вы также тестировали внутреннюю работу элементов управления пользовательского интерфейса, что немного переборщило.
В старые времена я тестировал веб-формы aspnet, используя паттерн Model View Presenter. Я мог тестировать код с этим шаблоном, потому что абстрагировал условную логику / циклы / etc в отдельный класс, который не жил внутри фреймворка webforms.
В коде webforms codebehind оставалось только несколько свойств и вызов при загрузке страницы для инициализации самого класса presenter.
Затем каждый обработчик событий просто передавал работу классу ведущего.
Я провел много времени с этим шаблоном и обнаружил, что он делает вещи гораздо более удобными для тестирования, но это очень много работы по сравнению с aspnet mvc
.