mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-04-23 11:48:39 +02:00
98 lines
5.6 KiB
Markdown
98 lines
5.6 KiB
Markdown
|
# Модули помощники
|
||
|
|
||
|
При написании тестов не стоит забывать, что вы пишете код, а это значит, что вы можете использовать те же принципы, что при обычной разработке.
|
||
|
|
||
|
Вы можете создавать общие модули и экспортные методы, которые упростят написание тестов для вашего продукта.
|
||
|
Такие как модули создания тестовых данных, настройки мокирования, общих проверок и так далее.
|
||
|
Главное сначала подумать об организации работы с ними, чтобы в будущем было проще находить нужные методы и избежать конфликтов при разработке.
|
||
|
|
||
|
## Конструкторы данных
|
||
|
|
||
|
Предположим у нас есть подсистема управления складом, которая содержит документы поступления, перемещения и реализации.
|
||
|
Создание документа поступления нам понадобится при тестировании всех видов документов, поэтому стоит вынести это в отдельный общий модуль.
|
||
|
|
||
|
```bsl title="ОбщийМодуль.ТестовыеДанныеУправлениеСкладом"
|
||
|
Функция НовоеПоступлениеТовара(Склад, Товар, Поставщик = Неопределено) Экспорт
|
||
|
Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПоступлениеТоваров)
|
||
|
.ФикцияОбязательныхПолей()
|
||
|
.Установить("Склад");
|
||
|
|
||
|
Если Поставщик = Неопределено Тогда
|
||
|
Конструктор.Фикция("Поставщик");
|
||
|
Иначе
|
||
|
Конструктор.Установить("Поставщик", Поставщик);
|
||
|
КонецЕсли
|
||
|
|
||
|
Возврат Конструктор
|
||
|
.ТабличнаяЧасть("Товары")
|
||
|
.ДобавитьСтроку()
|
||
|
.Установить("Номенклатура", Товар)
|
||
|
.Фикция("Количество")
|
||
|
.Фикция("Цена")
|
||
|
.Записать();
|
||
|
|
||
|
КонецФункции
|
||
|
```
|
||
|
|
||
|
Бывают случаи, когда слишком сложно кастомизировать создание объекта через параметры, тогда удобнее возвращать конструктор объекта с базовым заполнением. Либо сделать набор методов-пресетов для различных кейсов.
|
||
|
|
||
|
```bsl title="ОбщийМодуль.ТестовыеДанныеУправлениеСкладом"
|
||
|
Функция КонструкторПоступленияТовара(Склад, Поставщик = Неопределено) Экспорт
|
||
|
Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПоступлениеТоваров)
|
||
|
.ФикцияОбязательныхПолей()
|
||
|
.Установить("Склад");
|
||
|
|
||
|
Если Поставщик = Неопределено Тогда
|
||
|
Конструктор.Фикция("Поставщик");
|
||
|
Иначе
|
||
|
Конструктор.Установить("Поставщик", Поставщик);
|
||
|
КонецЕсли
|
||
|
|
||
|
Возврат Конструктор;
|
||
|
|
||
|
КонецФункции
|
||
|
|
||
|
Функция НовоеПоступлениеТовара(Склад, Товар, Поставщик = Неопределено) Экспорт
|
||
|
Конструктор = КонструкторПоступленияТовара(Склад, Поставщик);
|
||
|
|
||
|
Возврат Конструктор
|
||
|
.ТабличнаяЧасть("Товары")
|
||
|
.ДобавитьСтроку()
|
||
|
.Установить("Номенклатура", Товар)
|
||
|
.Фикция("Количество")
|
||
|
.Фикция("Цена")
|
||
|
.Записать();
|
||
|
|
||
|
КонецФункции
|
||
|
|
||
|
Функция НовоеПоступлениеТовараОтЮрЛица(Склад, Товар) Экспорт
|
||
|
Поставщик = НовоеЮрЛицо();
|
||
|
|
||
|
Конструктор = КонструкторПоступленияТовара(Склад, Поставщик);
|
||
|
|
||
|
Возврат Конструктор
|
||
|
.ТабличнаяЧасть("Товары")
|
||
|
.ДобавитьСтроку()
|
||
|
.Установить("Номенклатура", Товар)
|
||
|
.Фикция("Количество")
|
||
|
.Фикция("Цена")
|
||
|
.Записать();
|
||
|
|
||
|
КонецФункции
|
||
|
|
||
|
Функция НовоеПоступлениеТовараОтФизЛица(Склад, Товар) Экспорт
|
||
|
Поставщик = НовоеФизЛицо();
|
||
|
|
||
|
Конструктор = КонструкторПоступленияТовара(Склад, Поставщик);
|
||
|
|
||
|
Возврат Конструктор
|
||
|
.ТабличнаяЧасть("Товары")
|
||
|
.ДобавитьСтроку()
|
||
|
.Установить("Номенклатура", Товар)
|
||
|
.Фикция("Количество")
|
||
|
.Фикция("Цена")
|
||
|
.Записать();
|
||
|
|
||
|
КонецФункции
|
||
|
```
|