5.6 KiB
Модули помощники
При написании тестов не стоит забывать, что вы пишете код, а это значит, что вы можете использовать те же принципы, что при обычной разработке.
Вы можете создавать общие модули и экспортные методы, которые упростят написание тестов для вашего продукта.
Такие как модули создания тестовых данных, настройки мокирования, общих проверок и так далее.
Главное сначала подумать об организации работы с ними, чтобы в будущем было проще находить нужные методы и избежать конфликтов при разработке.
Конструкторы данных
Предположим у нас есть подсистема управления складом, которая содержит документы поступления, перемещения и реализации. Создание документа поступления нам понадобится при тестировании всех видов документов, поэтому стоит вынести это в отдельный общий модуль.
Функция НовоеПоступлениеТовара(Склад, Товар, Поставщик = Неопределено) Экспорт
Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПоступлениеТоваров)
.ФикцияОбязательныхПолей()
.Установить("Склад");
Если Поставщик = Неопределено Тогда
Конструктор.Фикция("Поставщик");
Иначе
Конструктор.Установить("Поставщик", Поставщик);
КонецЕсли
Возврат Конструктор
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Номенклатура", Товар)
.Фикция("Количество")
.Фикция("Цена")
.Записать();
КонецФункции
Бывают случаи, когда слишком сложно кастомизировать создание объекта через параметры, тогда удобнее возвращать конструктор объекта с базовым заполнением. Либо сделать набор методов-пресетов для различных кейсов.
Функция КонструкторПоступленияТовара(Склад, Поставщик = Неопределено) Экспорт
Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПоступлениеТоваров)
.ФикцияОбязательныхПолей()
.Установить("Склад");
Если Поставщик = Неопределено Тогда
Конструктор.Фикция("Поставщик");
Иначе
Конструктор.Установить("Поставщик", Поставщик);
КонецЕсли
Возврат Конструктор;
КонецФункции
Функция НовоеПоступлениеТовара(Склад, Товар, Поставщик = Неопределено) Экспорт
Конструктор = КонструкторПоступленияТовара(Склад, Поставщик);
Возврат Конструктор
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Номенклатура", Товар)
.Фикция("Количество")
.Фикция("Цена")
.Записать();
КонецФункции
Функция НовоеПоступлениеТовараОтЮрЛица(Склад, Товар) Экспорт
Поставщик = НовоеЮрЛицо();
Конструктор = КонструкторПоступленияТовара(Склад, Поставщик);
Возврат Конструктор
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Номенклатура", Товар)
.Фикция("Количество")
.Фикция("Цена")
.Записать();
КонецФункции
Функция НовоеПоступлениеТовараОтФизЛица(Склад, Товар) Экспорт
Поставщик = НовоеФизЛицо();
Конструктор = КонструкторПоступленияТовара(Склад, Поставщик);
Возврат Конструктор
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Номенклатура", Товар)
.Фикция("Количество")
.Фикция("Цена")
.Записать();
КонецФункции