`#${crypto.getRandomValues(new Uint32Array(1))[0].toString(16).padStart(8, 0).slice(-6)}`
`#${crypto.getRandomValues(new Uint32Array(1))[0].toString(16).padStart(8, 0)}`
Microsoft представила ASP.NET MVC, потому что они думали, что могут зарабатывать деньги на неиспользованном рынке - те, кто считает веб-формы слишком «тяжеловесными», и кто программирует с использованием более легкого фреймворка. . Сюда входят те, кто привык к парадигме MVC.
Сюда также входят те, кто не мог понять, как выполнять модульные тесты в веб-формах, и кто хочет использовать модульные тесты и TDD.
Способ выполнения он с веб-формами, как и все остальное, должен разделить все, кроме кода пользовательского интерфейса, на отдельные классы в библиотеке классов. Используйте TDD для разработки этих классов.
Следующий уровень споров заключается в том, необходимо ли использовать TDD для разработки оставшейся части кода: разметки, клиентского кода, взаимодействия с пользователем и т. Д. Мой ответ таков: если вы Остальное изолировали и проверили, что не стоит использовать для этого TDD.
Учтите: ваши страницы должны иметь определенный вид. Собираетесь ли вы написать неудачный модульный тест, чтобы доказать, что вы правильно используете CSS? Чтобы доказать, что вы используете правильные стили CSS? Я так не думаю.
Чтобы уточнить: в TDD мы начинаем с неудачного модульного теста. Затем мы вносим простейшие возможные изменения, которые сделают тест успешным.
Представьте себе использование TDD для веб-страницы. Какие тесты вы завершите с ошибкой?
Чтобы уточнить: в TDD мы начинаем с неудачного модульного теста. Затем мы вносим простейшие возможные изменения, которые сделают тест успешным.
Представьте себе использование TDD для веб-страницы. Какие тесты вы завершите с ошибкой?
Чтобы уточнить: в TDD мы начинаем с неудачного модульного теста. Затем мы вносим простейшие возможные изменения, которые сделают тест успешным.
Представьте себе использование TDD для веб-страницы. Какие тесты вы завершите с ошибкой?
И ни один из вышеперечисленных тестов на внешний вид страницы. Ни один из них не проверяет поведение какого-либо JavaScript на странице на стороне клиента.
Я думаю, что это глупо. Вместо этого проверьте свой метод DAL, который извлекает данные на основе идентификатора. Убедитесь, что он возвращает правильный идентификатор для идентификатора 1. Затем, сколько времени потребуется, чтобы вручную протестировать страницу, чтобы убедиться, что она выглядит правильно, вы можете ввести «1» и нажать «Перейти», и что данные, отображаемые в таблице, являются правильными данными для клиента 1?
Разработка через тестирование и автоматические модульные тесты предназначены для проверки поведения. Пользовательский интерфейс веб-формы в основном декларативный. Здесь наблюдается большое «рассогласование импеданса».
Во-первых, очень сложно тестировать WebForms. Но если вы разбиваете логику на контроллеры / презентаторы, такие как шаблон MVC / MVP, вы можете по крайней мере протестировать презентаторов.
Псевдокод
Default.aspx
public void Page_Init(object sender, EventArgs e) {
_presenter = new DefaultPresenter(IDependencyOne, IDependencyTwo etc) //Init new presenter, either from IoC container of choose or "new-it-up"
}
public void Save() {
_presenter.Save(txtValue.Text)
}
Тогда вы можете легко протестировать презентатора по крайней мере изолированно =)
Вы можете запускать тесты на основе HTTP для проверки функциональности высокого уровня. Лучше всего было бы инкапсулировать код программной части на бизнес-уровне и запускать на нем модульные тесты.
Вы можете использовать официальную среду Unittest Framework: http://msdn.microsoft.com/en-us/library/ms182526.aspx