Перейти к основному содержимому

Тестирование Серверных методов по работе с Формой

Иногда нам хочется протестировать серверный метод, который предназначен для работы с формой, например, добавление элементов на форму.
Основная проблема в таком тесте, это получить форму на сервере, т.к. создать форму на сервере не получиться и с клиента ее нельзя передать.

Вот один из способов реализовать такой тест:

Код целиком

Тест:

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

Форма:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Выполнить(Параметры.Метод);
КонецПроцедуры

Подготовка

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

Реализация

Работа нашего нашего теста будет состоять из 3-х шагов:

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

В модуле формы в обработчике ПриСозданииНаСервере прописываем обратный вызов переданного в форму теста:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Выполнить(Параметры.Метод); // Шаг 2
КонецПроцедуры