Тестирование Серверных методов по работе с Формой
Иногда нам хочется протестировать серверный метод, который предназначен для работы с формой, например, добавление элементов на форму.
Основная проблема в таком тесте, это получить форму на сервере, т.к. создать форму на сервере не получиться и с клиента ее нельзя передать.
Вот один из способов реализовать такой тест:
Код целиком
Тест:
Процедура ДействияНадФормой(Форма = Неопределено) Экспорт
#Если Клиент Тогда
ПараметрыФормы = Новый Структура("Метод", "yaxunit_ОбщегоНазначения.ДействияНадФормой(ЭтотОбъект)");
Форма = ОткрытьФорму("ОбщаяФорма.НашаОбщаяФорма", ПараметрыФормы);
Форма.Закрыть();
#Иначе
Результат = НашТестируемыйМетод(Форма);
ЮТест.ОжидаетЧто(Результат, "Создание декорации надпись")
.Свойство("Вид").Равно(ВидДекорацииФормы.Надпись);
#КонецЕсли
КонецПроцедуры
Форма:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Выполнить(Параметры.Метод);
КонецПроцедуры
Подготовка
- Создаем клиент-серверный тестовый модуль
- Регистрируем наш тестовый метод как Клиентский тест.
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты.ДобавитьКлиентскийТест("ДействияНадФормой");
КонецПроцедуры
- Добавляем экспортный метод который будет реализовывать тест, в качестве входного параметра укажем Форму.
Процедура ДействияНадФормой(Форма = Неопределено) Экспорт
КонецПроцедуры
- Создаем в расширении Общую форму на которой мы будем проверять наш метод, в модуль формы добавляем обработчик события ПриСозданииНаСервере.
Реализация
Работа нашего нашего теста будет состоять из 3-х шагов:
- Сначала мы открываем форму и передаем в параметрах адрес нашего тестового метода.
- В обработчике модуля формы ПриСозданииНаСервере делаем обратный вызов нашего теста с передачей этой формы в качестве параметра.
- Вызываем тестируемый метод с нашей формой и проверяем результат.
Процедура ДействияНадФормой(Форма = Неопределено) Экспорт
#Если Клиент Тогда // Шаг 1
// указываем путь к нашему тестовому методу в качестве параметра открытия формы
ПараметрыФормы = Новый Структура("Метод", "yaxunit_ОбщегоНазначения.ДействияНадФормой(ЭтотОбъект)");
// открываем форму
Форма = ОткрытьФорму("ОбщаяФорма.НашаОбщаяФорма", ПараметрыФормы);
Форма.Закрыть();
#Иначе // Шаг 3
// в эту ветку мы попадаем уже после вызова тестового метода из обработчика модуля формы ПриСозданииНаСервере и имеем в своем распоряжении Форму
// вызываем метод который мы хотим протестировать
Результат = НашТестируемыйМетод(Форма);
// Проверяем результат:
// Допустим наш метод добавляет на форму Декорацию надпись и возвращает созданный элемент формы.
ЮТест.ОжидаетЧто(Результат, "Создание декорации надпись")
.Свойство("Вид").Равно(ВидДекорацииФормы.Надпись);
#КонецЕсли
КонецПроцедуры
В модуле формы в обработчике ПриСозданииНаСервере прописываем обратный вызов переданного в форму теста:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Выполнить(Параметры.Метод); // Шаг 2
КонецПроцедуры