mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-03-17 20:48:01 +02:00
* Скорректирован подбор реакции, если ни одна не подходит
* Добавлен параметр для возможности дообучения объекта
This commit is contained in:
parent
c76adbb0f7
commit
8e7fbf586d
@ -51,15 +51,17 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Объект, методы которого хотим подменить.
|
||||
//
|
||||
// СброситьСтарыеНастройки - Булево - Необходимо удалить старые настройки по объекту.
|
||||
// Истина - все предидущие настройки мокирования объекта будут забыты;
|
||||
// Ложь - будет выполнено дообучение объекта.
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - см. МокитоОбучение
|
||||
Функция Обучение(Объект) Экспорт
|
||||
Функция Обучение(Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
|
||||
Режимы = МокитоСлужебный.РежимыРаботы();
|
||||
МокитоСлужебный.УстановитьРежим(Режимы.Обучение);
|
||||
|
||||
Возврат МокитоОбучение.Обучение(Объект);
|
||||
Возврат МокитоОбучение.Обучение(Объект, СброситьСтарыеНастройки);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -27,12 +27,16 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Обучаемый объект, с методами которого хотим работать.
|
||||
// СброситьСтарыеНастройки - Булево - Необходимо удалить старые настройки по объекту.
|
||||
// Истина - все предидущие настройки мокирования объекта будут забыты;
|
||||
// Ложь - будет выполнено дообучение объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот же модуль, для замыкания
|
||||
Функция Обучение(Объект) Экспорт
|
||||
Функция Обучение(Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
|
||||
УстановитьПараметрыОбучения(Объект);
|
||||
МокитоСлужебный.ЗарегистрироватьПерехватОбъекта(Объект, СброситьСтарыеНастройки);
|
||||
|
||||
Возврат МокитоОбучение;
|
||||
|
||||
@ -255,7 +259,6 @@
|
||||
ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения", Объект, Неопределено);
|
||||
|
||||
МокитоСлужебный.Настройки().ПараметрыОбучения = ПараметрыОбучения;
|
||||
МокитоСлужебный.ЗарегистрироватьПерехватОбъекта(Объект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -265,14 +265,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗарегистрироватьПерехватОбъекта(Знач Объект) Экспорт
|
||||
Процедура ЗарегистрироватьПерехватОбъекта(Знач Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
|
||||
Если ЭтоОбъект(Объект) Тогда
|
||||
Объект = Объект.Ссылка;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
ПараметрыПерехвата.Вставить(Объект, ОписаниеПараметровПерехватаОбъекта(Объект));
|
||||
|
||||
Если СброситьСтарыеНастройки ИЛИ ПараметрыПерехвата[Объект] = Неопределено Тогда
|
||||
ПараметрыПерехвата.Вставить(Объект, ОписаниеПараметровПерехватаОбъекта(Объект));
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -420,6 +423,11 @@
|
||||
Для Каждого Реакция Из ПараметрыПерехватаМетода.Реакции Цикл
|
||||
|
||||
ПриоритетРеакции = ПроверитьРеакцию(Реакция, ПараметрыВызова);
|
||||
|
||||
Если ПриоритетРеакции < 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ПриоритетыРеакций.Добавить(Новый Структура("Приоритет, Реакция", ПриоритетРеакции, Реакция));
|
||||
|
||||
Если ЛучшийПриоритет < ПриоритетРеакции Тогда
|
||||
@ -428,7 +436,12 @@
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если ЛучшийПриоритет <= 0 Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Реакция = Неопределено;
|
||||
|
||||
Для Каждого ПриоритетРеакции Из ПриоритетыРеакций Цикл
|
||||
|
||||
Если ПриоритетРеакции.Приоритет = ЛучшийПриоритет Тогда
|
||||
@ -459,7 +472,7 @@
|
||||
|
||||
Если НЕ ПроверитьПараметр(ПараметрыМетода[Инд], Реакция.УсловиеРеакции[Инд]) Тогда
|
||||
|
||||
Возврат 0;
|
||||
Возврат -1;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
@ -26,6 +26,7 @@
|
||||
.ДобавитьТест("Проверить")
|
||||
.ДобавитьТест("Прогон_НакоплениеСтатистики").СПараметрами(Истина).СПараметрами(Ложь)
|
||||
.ДобавитьСерверныйТест("МокированиеМетодовСсылочныхОбъектов").ВТранзакции()
|
||||
.ДобавитьТест("ОшибкаПодбораРеакции")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -50,6 +51,7 @@
|
||||
.Равно(2);
|
||||
|
||||
Описание = "Обучение через указание имени и набора параметров";
|
||||
|
||||
Мокито.Обучение(Интеграция)
|
||||
.Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, ЛюбойПараметр))
|
||||
.Вернуть(20)
|
||||
@ -230,6 +232,30 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОшибкаПодбораРеакции() Экспорт
|
||||
|
||||
Мокито.Обучение(Интеграция)
|
||||
.Когда("ВыполнитьЗапрос")
|
||||
.ВыброситьИсключение("Не установлен ответ")
|
||||
.Когда("ВыполнитьЗапрос", Мокито.МассивПараметров("api/versions"))
|
||||
.Вернуть(200)
|
||||
.Когда("ВыполнитьЗапрос", Мокито.МассивПараметров("sessions"))
|
||||
.Вернуть(200)
|
||||
.Прогон();
|
||||
|
||||
ЮТУтверждения.Что(Интеграция.ВыполнитьЗапрос("api/versions")).Равно(200);
|
||||
ЮТУтверждения.Что(Интеграция.ВыполнитьЗапрос("sessions")).Равно(200);
|
||||
|
||||
Мокито.Обучение(Интеграция, Ложь)
|
||||
.Когда("ВыполнитьЗапрос", Мокито.МассивПараметров("sessions"))
|
||||
.Вернуть(403)
|
||||
.Прогон();
|
||||
|
||||
ЮТУтверждения.Что(Интеграция.ВыполнитьЗапрос("api/versions")).Равно(200);
|
||||
ЮТУтверждения.Что(Интеграция.ВыполнитьЗапрос("sessions")).Равно(403);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
Loading…
x
Reference in New Issue
Block a user