From b2ea69c09e7a352e30963d5a392e88d012cb92ea Mon Sep 17 00:00:00 2001 From: Dima Date: Wed, 15 Mar 2023 17:18:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=91=D0=A1=D0=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- documentation/docs/user-api/mockito.md | 34 +++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/documentation/docs/user-api/mockito.md b/documentation/docs/user-api/mockito.md index 2823e1d23..dcfe8c7cc 100644 --- a/documentation/docs/user-api/mockito.md +++ b/documentation/docs/user-api/mockito.md @@ -136,7 +136,6 @@ flowchart LR Условия можно задать на равенство определенному значению, на проверку типа переданного значения или же безусловно принимать любый параметры - Существует 2 основных подхода к формированию условий вызова: 1. Явный вызов метода с параметрами: `Обучение(РаботаСHTTP).Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Данные)).Вернуть(2)` @@ -265,3 +264,36 @@ flowchart LR .Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(Справочники.ИсточникиДанных.FTP, Мокито.ЛюбойПараметр())) .ВыполнитьМетод(); ``` + +4. Пропустить вызов метода, внутри которого происходит обращение к внешнему ресурсу, что "мешает" выполнить тест + + На примере отправки почтового сообщения средствами БСП 2.4.6, без подключения к почтовому серверу. + + Дано: собственный экспортный метод ОМ, который хотим протестировать + + ```bsl + Процедура ВыполнитьРассылкуОтчета() Экспорт + + // Сложная бизнес-логика подготовки писем, которую мы тестируем + + // Вызов метода, который выдаст исключение, т.к. в текущей ИБ не настроена учетная запись электронной почты + РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма); + + // Продолжение метода, в котором, к примеру, очищается РС, хранящий задания к рассылке + + КонецПроцедуры + ``` + + Метод `РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение` вызывает метод `РаботаСПочтовымиСообщениямиСлужебный.ОтправитьСообщение`, который надо заимствовать в расширение (`&Вместо`) и немного доработать: + + ```bsl + &Вместо("ОтправитьСообщение") + Процедура ЮТОтправитьСообщение(Знач УчетнаяЗапись, Знач ПараметрыОтправки) Экспорт + + // Этот параметр является возвращаемым значением, поэтому установим ему значение в виде случайной строки, таким образом мы имитируем получение идентификатора от почтового сервера + ПараметрыОтправки.Вставить("ИдентификаторСообщения", ЮТТестовыеДанные.СлучайнаяСтрока()); + + КонецПроцедуры + ``` + + Теперь при вызове тестируемой процедуры `ВыполнитьРассылкуОтчета` выполнится заимствованный метод, а в конце будет получен идентификатор "отправленного" сообщения без подключения к реальному почтовому серверу.