1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-03-17 20:48:01 +02:00
Моки и предикаты, использование в проверках
This commit is contained in:
alkoleft 2023-05-20 01:26:43 +03:00
parent daaf564745
commit 9f4d5664c4
4 changed files with 82 additions and 46 deletions

View File

@ -202,45 +202,8 @@
Функция СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода)
Возврат Новый Структура("УсловиеРеакции, Действие", УсловиеРеакции(СтруктураВызоваМетода), Неопределено);
КонецФункции
Функция УсловиеРеакции(СтруктураВызоваМетода)
Параметры = СтруктураВызоваМетода.Параметры;
Если Параметры = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Условия = Новый Массив;
ТипыУсловий = МокитоСлужебный.ТипыУсловийПараметров();
Для Каждого Параметр Из Параметры Цикл
Если МокитоСлужебный.ЭтоМаскаПарамера(Параметр) Тогда
Условия.Добавить(Параметр);
ИначеЕсли ЮТПредикатыКлиентСервер.ЭтоПредикат(Параметр) Тогда
Маска = МокитоСлужебный.ОписаниеМаскиПараметра(ТипыУсловий.Предикат, 90);
Маска.Вставить("Предикат", ЮТПредикатыКлиентСервер.НаборПредикатов(Параметр));
Условия.Добавить(Маска);
Иначе
Маска = МокитоСлужебный.ОписаниеМаскиПараметра(ТипыУсловий.Значение, 100);
Маска.Вставить("Значение", Параметр);
Условия.Добавить(Маска);
КонецЕсли;
КонецЦикла;
Возврат Условия;
Условия = МокитоСлужебный.УсловиеИзПараметров(СтруктураВызоваМетода.Параметры);
Возврат Новый Структура("УсловиеРеакции, Действие", Условия, Неопределено);
КонецФункции

View File

@ -213,11 +213,7 @@
Параметр = ВызовМетода.Параметры[Инд];
Условие = СтруктураВызоваМетода.Параметры[Инд];
Если МокитоСлужебный.ЭтоМаскаПарамера(Условие) Тогда
Успешно = МокитоСлужебный.ПроверитьПараметр(Параметр, Условие);
Иначе
Успешно = ЮТСравнениеКлиентСервер.ЗначенияРавны(Параметр, Условие);
КонецЕсли;
Успешно = МокитоСлужебный.ПроверитьПараметр(Параметр, Условие);
Если НЕ Успешно Тогда
Прервать;
@ -258,7 +254,8 @@
Если МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода) Тогда
СтруктураВызоваМетода = ИмяМетода;
Иначе
СтруктураВызоваМетода = МокитоСлужебный.СтруктураВызоваМетода(Параметры.ПроверяемыйОбъект, ИмяМетода, ПараметрыВызова);
Условия = МокитоСлужебный.УсловиеИзПараметров(ПараметрыВызова);
СтруктураВызоваМетода = МокитоСлужебный.СтруктураВызоваМетода(Параметры.ПроверяемыйОбъект, ИмяМетода, Условия);
КонецЕсли;
Если СтруктураВызоваМетода.Объект <> Параметры.ПроверяемыйОбъект Тогда

View File

@ -572,4 +572,40 @@
КонецФункции
Функция УсловиеИзПараметров(Параметры) Экспорт
Если Параметры = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Условия = Новый Массив;
ТипыУсловий = ТипыУсловийПараметров();
Для Каждого Параметр Из Параметры Цикл
Если ЭтоМаскаПарамера(Параметр) Тогда
Условия.Добавить(Параметр);
ИначеЕсли ЮТПредикатыКлиентСервер.ЭтоПредикат(Параметр) Тогда
Маска = ОписаниеМаскиПараметра(ТипыУсловий.Предикат, 90);
Маска.Вставить("Предикат", ЮТПредикатыКлиентСервер.НаборПредикатов(Параметр));
Условия.Добавить(Маска);
Иначе
Маска = ОписаниеМаскиПараметра(ТипыУсловий.Значение, 100);
Маска.Вставить("Значение", Параметр);
Условия.Добавить(Маска);
КонецЕсли;
КонецЦикла;
Возврат Условия;
КонецФункции
#КонецОбласти

View File

@ -259,8 +259,48 @@
Процедура ИспользованиеПредикатов() Экспорт
ВызватьИсключение "Не реализовано";
ЛюбойПараметр = Мокито.ЛюбойПараметр();
УсловиеСтруктура = ЮТест.Предикат()
.ИмеетТип("Структура")
.Реквизит("Флаг").Равно(1)
.Получить();
Адрес = "service.ru";
Мокито.Обучение(Интеграция)
.Когда("ВыполнитьЗапрос")
.ВыброситьИсключение("Не отработал перехват")
.Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, УсловиеСтруктура))
.Вернуть(1)
.Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, ЮТест.Предикат().Реквизит("Флаг").Равно(2)))
.Вернуть(2)
.Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, ЮТест.Предикат().ИмеетТип("Массив").Реквизит(0).Равно(3)))
.Вернуть(3)
.Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, ЮТест.Предикат().Равно(4)))
.Вернуть(4)
.Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЮТест.Предикат().Содержит("com"), ЮТест.Предикат().Равно(4)))
.Вернуть(5)
.Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЮТест.Предикат().Содержит("org").Получить(), ЮТест.Предикат().Равно(4)))
.Вернуть(6)
.Прогон()
;
ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес, Новый Структура("Флаг", 1)))
.Равно(1);
ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес, 4))
.Равно(4);
ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос("service.com", 4))
.Равно(4); // Не вернет 5, потому что если несколько предиктов в условиях параметров, нужно использовать Получить
ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос("service.org", 4))
.Равно(6); //
ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес, ЮТОбщий.ЗначениеВМассиве(3)))
.Равно(3);
ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес, Новый Структура("Флаг", 2)))
.Равно(2);
Мокито.Проверить(Интеграция)
.КоличествоВызовов("ВыполнитьЗапрос").Равно(6)
.КоличествоВызовов("ВыполнитьЗапрос", Мокито.МассивПараметров(ЮТест.Предикат().Содержит("ru"))).Равно(4)
.КоличествоВызовов("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, Новый Структура("Флаг", 2))).Равно(1)
КонецПроцедуры
#КонецОбласти