Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Пачка доработок по Мокито #232

Merged
merged 9 commits into from
Dec 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions exts/yaxunit/src/CommonModules/Мокито/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,15 @@
//
// Параметры:
// Объект - Произвольный - Устанавливает проверяемый объект, вызовы методов которого будем проверять.
//
// Описание - Строка - Описание проверки, которое будет выведено при возникновении ошибки
// Возвращаемое значение:
// ОбщийМодуль - см. МокитоПроверки
Функция Проверить(Объект) Экспорт
Функция Проверить(Объект, Описание = Неопределено) Экспорт

Режимы = МокитоСлужебный.РежимыРаботы();
МокитоСлужебный.УстановитьРежим(Режимы.Проверка);

Возврат МокитоПроверки.Проверить(Объект);
Возврат МокитоПроверки.Проверить(Объект, Описание);

КонецФункции

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
Функция Обучение(Объект, СброситьСтарыеНастройки = Истина) Экспорт

УстановитьПараметрыОбучения(Объект);
МокитоСлужебный.ЗарегистрироватьПерехватОбъекта(Объект, СброситьСтарыеНастройки);
МокитоСлужебный.ДобавитьНастройкуПерехватаВызововОбъекта(Объект, СброситьСтарыеНастройки);

Возврат МокитоОбучение;

Expand Down Expand Up @@ -164,15 +164,22 @@

Процедура ЗарегистрироватьПерехватВыражения(ИмяМетода, ПараметрыВызова)

Объект = ОбучаемыйОбъект();
ДанныеПерехвата = МокитоСлужебный.ДанныеПерехвата(Объект);
ПереданаСтруктураВызоваМетода = МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода);

Если ПереданаСтруктураВызоваМетода Тогда
Объект = ИмяМетода.Объект;
Иначе
Объект = ОбучаемыйОбъект();
КонецЕсли;

ДанныеПерехвата = МокитоСлужебный.НастройкиПерехватаОбъекта(Объект);

Если ДанныеПерехвата = Неопределено Тогда
Сообщение = СтрШаблон("Не найдены настройки перехвата для %1. Необходимо предварительно вызвать метод Мокито.Обучение(Объект)", Объект);
ВызватьИсключение Сообщение;
КонецЕсли;

Если МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода) Тогда
Если ПереданаСтруктураВызоваМетода Тогда
СтруктураВызоваМетода = ИмяМетода;
Иначе
СтруктураВызоваМетода = МокитоСлужебный.СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыВызова);
Expand All @@ -186,9 +193,12 @@

Реакция = СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода);

Методы[СтруктураВызоваМетода.ИмяМетода].Реакции.Добавить(Реакция);
РеакцииМетода = Методы[СтруктураВызоваМетода.ИмяМетода].Реакции;
РеакцииМетода.Добавить(Реакция);

ПараметрыОбучения().РеакцияТекущегоВыражения = Реакция;
ПараметрыОбучения = ПараметрыОбучения();
ПараметрыОбучения.РеакцияТекущегоВыражения = Реакция;
ПараметрыОбучения.Реакции = РеакцииМетода;

КонецПроцедуры

Expand All @@ -200,10 +210,18 @@

#Область Реакции

Функция ОписаниеУсловнойРеакции()

Возврат Новый Структура("УсловиеРеакции, Действие");

КонецФункции

Функция СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода)

Условия = МокитоСлужебный.УсловиеИзПараметров(СтруктураВызоваМетода.Параметры);
Возврат Новый Структура("УсловиеРеакции, Действие", Условия, Неопределено);
ОписаниеУсловнойРеакции = ОписаниеУсловнойРеакции();
ОписаниеУсловнойРеакции.УсловиеРеакции = Условия;
Возврат ОписаниеУсловнойРеакции;

КонецФункции

Expand All @@ -213,33 +231,38 @@

Функция ОбучаемыйОбъект()

ПараметрыОбучения = ПараметрыОбучения();

Возврат ПараметрыОбучения.ОбучаемыйОбъект;
Возврат ПараметрыОбучения().ОбучаемыйОбъект;

КонецФункции

Функция ПараметрыОбучения()

Параметры = МокитоСлужебный.Настройки().ПараметрыОбучения;

Возврат Параметры;
Возврат МокитоСлужебный.Настройки().ПараметрыОбучения;

КонецФункции

Процедура УстановитьПараметрыОбучения(Объект)

ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения", Объект, Неопределено);

ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения, Реакции", Объект, Неопределено);
МокитоСлужебный.Настройки().ПараметрыОбучения = ПараметрыОбучения;

КонецПроцедуры

Процедура ЗарегистрироватьРеакцию(Действие)

Параметры = ПараметрыОбучения();

Действие.Вставить("Обработано", Ложь);

ПараметрыОбучения().РеакцияТекущегоВыражения.Действие = Действие;
Если Параметры.РеакцияТекущегоВыражения.Действие = Неопределено Тогда
Параметры.РеакцияТекущегоВыражения.Действие = Действие;
Иначе
НоваяРеакция = ОписаниеУсловнойРеакции();
ЗаполнитьЗначенияСвойств(НоваяРеакция, Параметры.РеакцияТекущегоВыражения);
НоваяРеакция.Действие = Действие;
Параметры.РеакцияТекущегоВыражения = НоваяРеакция;
Параметры.Реакции.Добавить(НоваяРеакция);
КонецЕсли;

КонецПроцедуры

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@
#Область ПрограммныйИнтерфейс

// см. Мокито.Проверить
Функция Проверить(Объект) Экспорт
Функция Проверить(Объект, Описание) Экспорт

УстановитьПараметрыПроверки(Объект);
УстановитьПараметрыПроверки(Объект, Описание);
Возврат МокитоПроверки;

КонецФункции
Expand Down Expand Up @@ -70,11 +70,13 @@
// ОбщийМодуль - Этот же модуль, для замыкания
Функция Равно(Количество, Знач Описание = Неопределено) Экспорт

Настройки = ПараметрыПроверки();

Статистика = СтатистикаВызовов();
ЮТУтверждения
.Что(Статистика, Описание)
.Что(Статистика, Настройки.Описание)
.ИмеющееПредставление(ОписаниеПроверяемогоОбъекта())
.ИмеетДлину(Количество);
.ИмеетДлину(Количество, Описание);

Возврат МокитоПроверки;

Expand Down Expand Up @@ -168,17 +170,17 @@
// Структура:
// * ПроверяемыйОбъект - Произвольный
// * СтруктураВызоваМетода - см. МокитоСлужебный.СтруктураВызоваМетода
// * Описание - Строка
Функция ПараметрыПроверки()

Параметры = МокитоСлужебный.Настройки().ПараметрыПроверки;
Возврат Параметры;
Возврат МокитоСлужебный.Настройки().ПараметрыПроверки;

КонецФункции

Процедура УстановитьПараметрыПроверки(Объект = Неопределено, СтруктураВызоваМетода = Неопределено)
Процедура УстановитьПараметрыПроверки(Объект, Описание)

ПараметрыОбучения = Новый Структура("ПроверяемыйОбъект, СтруктураВызоваМетода", Объект, СтруктураВызоваМетода);
МокитоСлужебный.Настройки().ПараметрыПроверки = ПараметрыОбучения;
ПараметрыПроверки = Новый Структура("ПроверяемыйОбъект, Описание, СтруктураВызоваМетода", Объект, Описание);
МокитоСлужебный.Настройки().ПараметрыПроверки = ПараметрыПроверки;

КонецПроцедуры

Expand Down
Loading
Loading