Примеры
Мокито — это мощный инструмент для мокирования методов в 1С, который позволяет управлять поведением системы во время тестирования. В этой статье мы рассмотрим все основные возможности Мокито с примерами и пояснениями.
Больше примеров в тестах тут, тут и тут. Причем всегда актуальных.
Подмена метода общего модуля, должен вернуть нужный результат
Пример
// Настройка мокирования
Мокито.Обучение(ОбщийМодуль.РаботаСHTTP)
.Когда("ОтправитьЗапрос").Вернуть(Новый HTTPСервисОтвет(200))
.Прогон();
// Тестовый прогон
Результат = ОбщийМодуль.РаботаСHTTP.ОтправитьЗапрос("https://example.com");
// Проверка
ЮТест.ОжидаетЧто(Результат.КодСостояния).Равно(200);
Пояснение:
Метод ОтправитьЗапрос
общего модуля РаботаСHTTP
возвращает заранее заданный ответ (HTTP-код 200).
Выброс исключения метода документа
Пример:
// Настройка мокирования
Мокито.Обучение(Документы.ПриходТовара)
.Когда("ОбработкаПроведения").ВыброситьИсключение("Ошибка проведения")
.Прогон();
// Тестовый прогон
Документ = Документы.ПриходТовара.СоздатьДокумент();
ЮТест.ОжидаетЧто(() -> Документ.Записать(РежимЗаписиДокумента.Проведение))
.ВыбрасываетИсключение("Ошибка проведения");
Пояснение:
Метод ОбработкаПроведения
документа ПриходТовара
выбрасывает исключение при вызове.
Пропуск метода справочника
Пример:
// Настройка мокирования
Мокито.Обучение(Справочники.Номенклатура)
.Когда("ОбновитьЦену").Пропустить()
.Прогон();
// Тестовый прогон
Справочники.Номенклатура.ОбновитьЦену("Товар1", 100);
// Проверка
ЮТест.ОжидаетЧто(Справочники.Номенклатура.ПолучитьЦену("Товар1")).Равно(0);
Пояснение:
Метод ОбновитьЦену
справочника Номенклатура
пропускается, и его выполнение не в лияет на данные.
Обучение по ссылке на объект
Пример:
// Настройка мокирования
Ссылка = Справочники.Номенклатура.НайтиПоНаименованию("Товар1");
Мокито.Обучение(Ссылка)
.Когда("ПолучитьЦену").Вернуть(100)
.Прогон();
// Тестовый прогон
Цена = Ссылка.ПолучитьОбъект().ПолучитьЦену();
// Проверка
ЮТест.ОжидаетЧто(Цена).Равно(100);
Пояснение:
Метод ПолучитьЦену
мокируется для объекта, указанного по ссылке.
Подмена результата метода менеджера
Пример:
// Настройка мокирования
Мокито.Обучение(Документы.ПриходТовара)
.Когда("ПолучитьКоличествоТоваров").Вернуть(10)
.Прогон();
// Тестовый прогон
Количество = Документы.ПриходТовара.ПолучитьКоличествоТоваров();
// Проверка
ЮТест.ОжидаетЧто(Количество).Равно(10);
Пояснение:
Метод ПолучитьКоличествоТоваров
модуля менеджера документа ПриходТовара
возвращает заранее заданное значение.
Подмена результата метода отчета
Пример:
// Настройка мокирования
Мокито.Обучение(Отчеты.ОСВ)
.Когда("СформироватьОтчет").Вернуть(Новый ТабличныйДокумент)
.Прогон();
// Тестовый прогон
Отчет = Отчеты.ОСВ.СоздатьОтчет();
Результат = Отчет.СформироватьОтчет();
// Проверка
ЮТест.ОжидаетЧто(Результат).ИмеетТип("ТабличныйДокумент");
Пояснение:
Метод СформироватьОтчет
отчета ОСВ
возвращает пустой табличный документ.
Подмена результата метода обработки
Пример:
// Настройка мокирования
Мокито.Обучение(Обработки.УправлениеЗаказами)
.Когда("ОбработатьЗаказ").Вернуть(Истина)
.Прогон();
// Тестовый прогон
Результат = Обработки.УправлениеЗаказами.ОбработатьЗаказ(123);
// Проверка
ЮТест.ОжидаетЧто(Результат).Равно(Истина);
Пояснение:
Метод ОбработатьЗаказ
обработки УправлениеЗаказами
возвращает заранее заданное значение.
Разные варианты условий на параметры
Условие по конкретным значениям
Мокито.Обучение(ОбщийМодуль.РаботаСHTTP)
.Когда("ОтправитьЗапрос", Мокито.МассивПараметров("https://example.com", Новый Структура("id", 123)))
.Вернуть(Новый HTTPСервисОтвет(200))
.Прогон();