Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Assert.AreEqual(

"Username already exists. Please enter a different user name.",

result.ViewData.ModelState["_FORM"].Errors[0].ErrorMessage);

}

[Test]

public void RegisterPostReturnsViewIfUsernameNotSpecified

{

AccountController controller = GetAccountController;

ViewResult result = (ViewResult)controller.Register("", "email",

"password", "password");

Assert.AreEqual(6, result.ViewData["PasswordLength"]);

Assert.AreEqual("You must specify a username.",

result.ViewData.ModelState["username"].Errors[0].ErrorMessage);

}

Основная

концепция, продемонстрированная в листинге 8.5, заключается в использовании "подставных" реализаций везде, где применяются реализации, не зависящие от кода, описанного в самом контроллере, а также в создании отдельных тестовых методов для разных сценариев выполнения одного и того же действия контроллера.

Заключение

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

ГЛАВА 9

ASP.NET MVC 2 и Visual Studio 2010

Пока писалась эта книга, процесс разработки ASP.NET MVC Framework не стоял на месте. Сначала вышла предварительная версия ASP.NET MVC Preview 1, а затем и ASP.NET MVC Preview 2. Некоторое время спустя была выпущена и новая версия инструмента разработчиков Visual Studio 2010 Beta 2. На момент написания этой части книги Visual Studio 2010 Beta 2 и ASP.NET MVC Preview 2 — последние версии, доступные широкой аудитории разработчиков.

Новая вторая версия ASP.NET MVC принесла во Framework значительную порцию нового функционала, новых концепций, новых удобных инструментов и API. В этой части книги мы бы хотели кратко осветить то, что предлагается разработчиками ASP.NET в предварительных версиях Framework.

Области

Понятие областей (areas) для ASP.NET MVC — новая концепция. Суть областей сводится к тому, чтобы предоставить возможность разделить чрезмерно большой проект на несколько групп, которые продолжали бы взаимодействовать друг с другом. Например, в компании работает несколько групп разработчиков, которые создают большой проект, включающий в себя: основной сайт, магазин, обзоры товаров, форум, внутренний сайт по администрированию и пр. Для создания такого проекта ASP.NET MVC 2 предлагает выделить каждую отдельную часть проекта в область, вместе эти области продолжали бы представлять собой один взаимосвязанный проект. Выделение из большого проекта отдельных проектов-областей позволит разным группам разработчиков

более независимо разрабатывать свои части приложения.

Предположим, что в крупной компании разрабатывается большой проект на базе ASP.NET MVC. Обычно группы, работающие над разными частями проекта, независимы друг от друга и связаны только спецификацией. Поэтому очень важно не допустить возможных конфликтов в программном коде, которые могут возникнуть, когда несколько частей большого проекта сливаются в одно целое. Так, например, группы, разрабатывающие части, отвечающие за магазин и за блог сайта, могут независимо друг от друга создать одноименные контроллеры AdminController. В случае, когда проект не основан на областях, слияние двух независимых частей с одноименным контроллером может быть сильно затруднено или невозможно. С использованием областей данная проблема решается, т. к. каждая область может иметь свой собственный независимый набор контроллеров.

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

Концепция областей появилась в ASP.NET MVC 2 Preview 1 в виде областей в решении с несколькими проектами. После выхода ASP.NET MVC 2 Preview 2 применение областей было расширено возможностью создавать области в одном проекте. Рассмотрим оба варианта.

Области для нескольких проектов

При создании решения с использованием областей, работающих для нескольких проектов, необходимо следовать следующим шагам:

1. Создать проект, который будет родительским (или главным) по отношению к проектам-областям.

2. Создать проекты-области, например, для форума, блога, магазина и т. д. В этих проектах требуется удалить файлы Global.asax, кроме того, можно удалить созданные по умолчанию файлы в папку Scripts, поскольку все скрипты будут браться из родительского проекта.

3. Добавить ссылки на проекты-области в родительском проекте.

4. Создать для каждого из проектов класс, наследующий от класса AreaRegistration, в котором перегрузить два элемента: метод RegisterArea и свойство AreaName. RegisterArea должен реализовать логику по регистрированию области в контексте приложения, свойство AreaName должно вернуть название области.

5. В родительском проекте в Global.asax необходимо вызвать метод AreaRegistration.RegisterAllAreas; для регистрации областей в контексте приложения во время запуска.

6. Заключительным шагом, который требуется для успешного запуска проекта с областями, является модификация файлов проекта *.csproj (*.vbproj для проектов на Visual Basic) каждого из проектов. В каждого таком файле необходимо раскомментировать относящиеся к областям строки кода (будет показано далее).

Рассмотрим шаги немного подробнее. На рис. 9.1 показана структура решения, в котором содержится три проекта: родительский проект AreasProject и два проекта-области — Forum и Store, которые реализуют логику форума и магазина соответственно.

Поделиться:
Популярные книги

Око Силы. Трилогия. 1937 -1938 годы

Валентинов Андрей
Око силы
Фантастика:
альтернативная история
8.08
рейтинг книги
Око Силы. Трилогия. 1937 -1938 годы

Путешественник

Юань Е
3. Повелитель тайн
Фантастика:
фэнтези
эпическая фантастика
5.00
рейтинг книги
Путешественник

Я до сих пор не князь. Книга XVI

Дрейк Сириус
16. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я до сих пор не князь. Книга XVI

Ты ждала меня, Заруна? Книга первая

Лу Энн
1. Мир Заруны
Фантастика:
героическая фантастика
8.00
рейтинг книги
Ты ждала меня, Заруна? Книга первая

Точка Бифуркации V

Смит Дейлор
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации V

Бояръ-Аниме. Газлайтер. Том 32

Володин Григорий Григорьевич
32. История Телепата
Фантастика:
альтернативная история
аниме
фэнтези
попаданцы
6.40
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 32

Первое поражение Сталина

Жуков Юрий Николаевич
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Первое поражение Сталина

Солнечный ветер (сборник)

Кларк Артур Чарльз
Шедевры фантастики
Фантастика:
космическая фантастика
5.00
рейтинг книги
Солнечный ветер (сборник)

Рейдер

Астахов Павел Алексеевич
Проза:
современная проза
7.75
рейтинг книги
Рейдер

Цвет сверхдержавы - красный 3 Восхождение. часть 1

Сергей Симонов
3. Цвет сверхдержавы - красный
Фантастика:
альтернативная история
5.00
рейтинг книги
Цвет сверхдержавы - красный 3 Восхождение. часть 1

Белая гвардия. История России

Булгаков Михаил Афанасьевич
Белая гвардия
Проза:
современная проза
советская классическая проза
5.00
рейтинг книги
Белая гвардия. История России

Жрец Хаоса. Книга ХVI

Борзых М.
16. Зов пустоты
Фантастика:
аниме
фэнтези
эпическая фантастика
попаданцы
5.00
рейтинг книги
Жрец Хаоса. Книга ХVI

Покушения и инсценировки: От Ленина до Ельцина

Зенькович Николай Александрович
Документальная литература:
биографии и мемуары
публицистика
5.00
рейтинг книги
Покушения и инсценировки: От Ленина до Ельцина

Дитя прибоя

Трофимов Ерофей
Дитя прибоя
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.25
рейтинг книги
Дитя прибоя