1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2024-11-30 08:36:50 +02:00

Дока по тестированию серверных методов для форм

This commit is contained in:
ekuznetsov 2024-08-01 00:26:33 +03:00
parent b24758405a
commit df544f9014

View File

@ -0,0 +1,119 @@
---
tags: [Формы, НаСервере]
sidebar_position: 2
---
# Тестирование Серверных методов по работе с Формой
Иногда нам хочется протестировать серверный метод который предназначен для работы с формой, например, добавление элементов на форму.
Вот один из способов реализовать такой тест:
<details>
<summary>Код целиком</summary>
Модуль:
```bsl
Процедура ДействияНадФормой(Форма = Неопределено) Экспорт
#Если Клиент Тогда
ПараметрыФормы = Новый Структура("Метод", "yaxunit_ОбщегоНазначения.ДействияНадФормой(%1)");
Форма = ОткрытьФорму("ОбщаяФорма.НашаОбщаяФорма", ПараметрыФормы);
Форма.Закрыть();
#Иначе
Результат = НашТестируемыйМетод(Форма);
ЮТест.ОжидаетЧто(Результат, "Создание декорации надпись")
.Свойство("Вид").Равно(ВидДекорацииФормы.Надпись);
#КонецЕсли
КонецПроцедуры
```
Форма:
```bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Выполнить(СтрШаблон(Параметры.Метод, ЭтотОбъект));
КонецПроцедуры
```
</details>
----
## Подготовка
1. Регистрируем наш тестовый метод как **Клиентский тест**.
```bsl
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты.ДобавитьКлиентскийТест("ДействияНадФормой");
КонецПроцедуры
```
2. Добавляем экспортный метод который будет реализовывать тест, в качестве входного параметра укажем **Форму**.
```bsl
Процедура ДействияНадФормой(Форма = Неопределено) Экспорт
КонецПроцедуры
```
3. Создаем в расширении **Общую форму** на которой мы будем проверять наш метод, в модуль формы добавляем обработчик события **ПриСозданииНаСервере**.
## Реализация
Работа нашего нашего теста будет состоять из 3-х шагов:
```mermaid
flowchart LR
init(1. Инициализация) --> run(2. Вызов теста с передачей формы как параметра)
run --> check(3. Тест)
```
1. Сначала мы открываем форму и передаем в параметрах адрес нашего тестового метода.
2. В обработчике модуля формы **ПриСозданииНаСервере** делаем обратный вызов нашего теста с передачей этой формы в качестве параметра.
3. Вызываем тестируемый метод с нашей формой и проверяем результат.
```bsl
Процедура ДействияНадФормой(Форма = Неопределено) Экспорт
#Если Клиент Тогда // Шаг 1
// указываем путь к нашему тестовому методу в качестве параметра открытия формы
ПараметрыФормы = Новый Структура("Метод", "yaxunit_ОбщегоНазначения.ДействияНадФормой(%1)");
// открываем форму
Форма = ОткрытьФорму("ОбщаяФорма.НашаОбщаяФорма", ПараметрыФормы);
Форма.Закрыть();
#Иначе // Шаг 3
// в эту ветку мы попадаем уже после вызова тестового метода из обработчика модуля формы ПриСозданииНаСервере и имеем в своем распоряжении Форму
// вызываем метод который мы хотим протестировать
Результат = НашТестируемыйМетод(Форма);
// Проверяем результат:
// Допустим наш метод добавляет на форму Декорацию надпись и возвращает созданный элемент формы.
ЮТест.ОжидаетЧто(Результат, "Создание декорации надпись")
.Свойство("Вид").Равно(ВидДекорацииФормы.Надпись);
#КонецЕсли
КонецПроцедуры
```
В модуле формы в обработчике **ПриСозданииНаСервере** прописываем обратный вызов переданного в форму теста:
```bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Выполнить(СтрШаблон(Параметры.Метод, ЭтотОбъект)); // Шаг 2
КонецПроцедуры
```