mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2024-11-30 08:36:50 +02:00
Дока по тестированию серверных методов для форм
This commit is contained in:
parent
b24758405a
commit
df544f9014
119
documentation/docs/cook-book/Forms/form-on-server.md
Normal file
119
documentation/docs/cook-book/Forms/form-on-server.md
Normal 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
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
Loading…
Reference in New Issue
Block a user