Skip to content

Commit

Permalink
Реализовано #158
Browse files Browse the repository at this point in the history
  • Loading branch information
SeiOkami committed Feb 3, 2025
1 parent c818a32 commit e5e4505
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,13 @@
.СПараметрами("ДанныеФормыСтруктура", "Свойство", Истина)
.ДобавитьТестовыйНабор("СтруктураТаблицыБазы")
.ДобавитьСерверныйТест("Тест_СтруктураТаблицыБазы_Справочник")
.ДобавитьТестовыйНабор("ЭтоОшибкаСуществованияМетода")
.ДобавитьТест("Тест_ЭтоОшибкаСуществованияМетода_Добавить")
// Объект | Ожидаемый результат | Ожидаемый результат без учета необъектного типа
.СПараметрами(Неопределено , Истина, Ложь)
.СПараметрами("Это строка" , Истина, Ложь)
.СПараметрами(Новый Структура, Истина, Истина)
.СПараметрами(Новый Массив , Ложь , Ложь)

;

Expand Down Expand Up @@ -640,6 +647,39 @@

#КонецОбласти

#Область ЭтоОшибкаСуществованияМетода

Процедура Тест_ЭтоОшибкаСуществованияМетода_Добавить(Объект, ОжиданиеСНеобъектным, ОжиданиеБезНеобъектного) Экспорт

Перем ЮТест;
ЮТест = ЖЧТ_Движок.ЮТест();

ТестируемыйМодуль = ТестируемыйМодуль();

Попытка

Объект.Добавить(1, 2, 3, 4, 5);

Исключение

ИнформацияОбОшибке = ИнформацияОбОшибке();

Результат = ТестируемыйМодуль.ЭтоОшибкаСуществованияМетода(ИнформацияОбОшибке, "Добавить");
ЮТест.ОжидаетЧто(Результат).Равно(ОжиданиеСНеобъектным);

Результат = ТестируемыйМодуль.ЭтоОшибкаСуществованияМетода(ИнформацияОбОшибке, "Добавить", Ложь);
ЮТест.ОжидаетЧто(Результат).Равно(ОжиданиеБезНеобъектного);

КонецПопытки;

Если ИнформацияОбОшибке = Неопределено Тогда
ВызватьИсключение "Метод Добавить не выдал ошибку, тест невозможно провести";
КонецЕсли;

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

#КонецОбласти

#Если Сервер Тогда

#Область ИменаСвойствОбъектаМетаданных
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,56 @@

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

// Это ошибка существования метода.
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/158
//
// Параметры:
// ИнформацияОбОшибке - ИнформацияОбОшибке
// ИмяМетода - Строка
// ПроверятьНаНеобъектныйТип - Булево - Если Истина, то ошибка "Значение не является объектного типа" тоже считается за ошибку отстуствия типа
//
// Возвращаемое значение:
// Булево
//
// Пример:
//
// Попытка
// Объект.НеобязательныйМетод();
// Исключение
// Если НЕ ЭтоОшибкаСуществованияМетода(ИнформацияОбОшибке(), "НеобязательныйМетод") Тогда
// ВызватьИсключение;
// КонецЕсли;
// КонецПопытки;
//
Функция ЭтоОшибкаСуществованияМетода(ИнформацияОбОшибке,
ИмяМетода, ПроверятьНаНеобъектныйТип = Истина) Экспорт

ОписаниеОшибки = ИнформацияОбОшибке.Описание;

ВременныеОбъекты = Новый Массив; //Массив из Неопределено
ВременныеОбъекты.Добавить(Новый Структура);

Если ПроверятьНаНеобъектныйТип Тогда
ВременныеОбъекты.Добавить();
КонецЕсли;

Для Каждого ВременныйОбъект Из ВременныеОбъекты Цикл

Попытка
ВременныйОбъект.СуперПуперМетод(); //@skip-check dynamic-access-method-not-found
Исключение
ВременноеОписание = СтрЗаменить(ИнформацияОбОшибке().Описание, "СуперПуперМетод", ИмяМетода);
Если ОписаниеОшибки = ВременноеОписание Тогда
Возврат Истина;
КонецЕсли;
КонецПопытки;

КонецЦикла;

Возврат Ложь;

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

#Если Сервер Тогда

// Структура свойств объекта.
Expand Down

0 comments on commit e5e4505

Please sign in to comment.