Создание тестовой структуры
Текущее значение, открытое в методе Open, сохраняется в свойстве Event класса Events. Класс Events предназначен для вызова методов Open или Add и возврата значения, определяющего успех или неудачу вызова. В случае удачного выполнения вызова из свойства Event можно получить данные Event.
Тестовая структура, предоставляемая технологией .NET, не отображает значения в свойстве веб-службы, и свойство нельзя определить как веб-метод с помощью идентификатора [WebMethod]. Идентификатор WebMethod располагается над всеми общими методами, представляемыми в качестве веб-служб XML. В данном случае нужна тестовая структура, использующая веб-службу и отображающая результаты таким образом, чтобы показать правильное функционирование кода.
Прекрасным механизмом для реализации тестовой структуры веб-службы являются веб-формы. Для метода Add класса Events была создана форма EventClient.aspx, реализующая добавление события. В веб-форму был добавлен элемент управления датой для фиксирования даты от конечного пользователя, и два текстовых поля для имени и описания события. Для отображения результирующего ID нового события после успешного выполнения функции Add в форму добавлено текстовое поле, отображающее ID, и кнопка Submit (Отправить), после нажатия на которую веб-форма выдает ответ. На рисунке 3.20 показан метод Add элемента управления датой после добавления события.
Рис. 3.20. Тестовая структура веб-формы с методом Add
Код веб-формы EventClient.aspx, приведенный в листинге 3.10, несложен. Как видно из рисунка 3.20, для каждого свойства класса anEvent в форме присутствует элемент управления. Кнопка Submit используется для инициализации вызова события Add. Код веб-формы EventClient.aspx содержит событие нажатия на кнопку элемента управления btnAdd. Веб-форма EventClient.aspx должна выполняться в том же веб-приложении, что и веб-служба. Ее назначением является только модульное тестирование кода, поэтому форма максимально упрощена; она реально обеспечивает разработчика обратной связью, информирующей о производительности веб-службы Events.
Листинг 3.10. Source Code for Events Add Function Test Harness - Web Form EventClient.aspx (html, txt)
Дизайнер компонентов автоматически добавил событие Click при двойном щелчке мышью на элементе управления btnAdd. В начале события Click созданы экземпляры класса anEvent и веб-службы Events. Так как эти классы находятся в едином пространстве имен, не нужно обращаться к пространству имен или размещать директиву using вверху исходного кода для пространства имен myPortal. Добавляемое событие представляется экземпляром anEvent с именем myEvent. Экземпляр класса Events называется myEvents. Свойства myEvent извлекаются из календарных элементов управления txtDescription и txtName. При заполнении пользователем экземпляра myEvent данными оно располагается в свойстве event экземпляра myEvents. Вызывается функция Add класса myEvents, и при ее успешной работе в элемент управления lblFeedback записывается сообщение об успехе функции; в противном случае – сообщение об ошибке.
Следует заметить, что в данном коде не предусмотрена обработка ошибок, поскольку он предназначен для тестирования и не используется при функционировании веб-службы. Отсутствие системы обработки ошибок позволит получить больше данных для проверки кода на устойчивость к ошибкам, возникающим в процессе работы.
Тестовую структуру следует содержать и хранить точно так же, как исходный код веб-службы. Она отражает работу программного решения и используется при проверке дальнейших усовершенствований веб-службы.