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

Модули помощники

При написании тестов не стоит забывать, что вы пишете код, а это значит, что вы можете использовать те же принципы, что при обычной разработке.

Вы можете создавать общие модули и экспортные методы, которые упростят написание тестов для вашего продукта.
Такие как модули создания тестовых данных, настройки мокирования, общих проверок и так далее.
Главное сначала подумать об организации работы с ними, чтобы в будущем было проще находить нужные методы и избежать конфликтов при разработке.

Конструкторы данных

Предположим у нас есть подсистема управления складом, которая содержит документы поступления, перемещения и реализации. Создание документа поступления нам понадобится при тестировании всех видов документов, поэтому стоит вынести это в отдельный общий модуль.

ОбщийМодуль.ТестовыеДанныеУправлениеСкладом
Функция НовоеПоступлениеТовара(Склад, Товар, Поставщик = Неопределено) Экспорт
Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПоступлениеТоваров)
.ФикцияОбязательныхПолей()
.Установить("Склад");

Если Поставщик = Неопределено Тогда
Конструктор.Фикция("Поставщик");
Иначе
Конструктор.Установить("Поставщик", Поставщик);
КонецЕсли

Возврат Конструктор
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Номенклатура", Товар)
.ФикцияРеквизитов("Количество, Цена")
.Записать();

КонецФункции

Бывают случаи, когда слишком сложно кастомизировать создание объекта через параметры, тогда удобнее возвращать конструктор объекта с базовым заполнением. Либо сделать набор методов-пресетов для различных кейсов.

ОбщийМодуль.ТестовыеДанныеУправлениеСкладом
Функция КонструкторПоступленияТовара(Склад, Поставщик = Неопределено) Экспорт
Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПоступлениеТоваров)
.ФикцияОбязательныхПолей()
.Установить("Склад");

Если Поставщик = Неопределено Тогда
Конструктор.Фикция("Поставщик");
Иначе
Конструктор.Установить("Поставщик", Поставщик);
КонецЕсли

Возврат Конструктор;

КонецФункции

Функция НовоеПоступлениеТовара(Склад, Товар, Поставщик = Неопределено) Экспорт
Конструктор = КонструкторПоступленияТовара(Склад, Поставщик);

Возврат Конструктор
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Номенклатура", Товар)
.ФикцияРеквизитов("Количество, Цена")
.Записать();

КонецФункции

Функция НовоеПоступлениеТовараОтЮрЛица(Склад, Товар) Экспорт
Поставщик = НовоеЮрЛицо();

Конструктор = КонструкторПоступленияТовара(Склад, Поставщик);

Возврат Конструктор
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Номенклатура", Товар)
.ФикцияРеквизитов("Количество, Цена")
.Записать();

КонецФункции

Функция НовоеПоступлениеТовараОтФизЛица(Склад, Товар) Экспорт
Поставщик = НовоеФизЛицо();

Конструктор = КонструкторПоступленияТовара(Склад, Поставщик);

Возврат Конструктор
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Номенклатура", Товар)
.ФикцияРеквизитов("Количество, Цена")
.Записать();

КонецФункции