Методика тестирования обработчиков событий
--Павел Лазарев 19:11, 11 декабря 2008 (SAMT)
Предлагается такая методика:
Например, создается обработчик события "ПередУдалением": <source lang=1c> &НаКлиенте Процедура ПриложенияПередУдалением(Элемент, Отказ) // Вставить содержимое обработчика. КонецПроцедуры </source>
Вызвать напрямую из теста эту процедуру можно, но не удастся установить визуальный элемент (Элемент - табличное поле) в нужное состояние.
Поэтому определяем процедуру, которую можно вызвать снаружи:
<source lang=1c> &НаКлиенте Процедура ПриложенияТекущиеДанныеПередУдалением(ТекущиеДанные, Отказ) Экспорт Если Не ПустаяСтрока(ТекущиеДанные.Имя) Тогда Отказ = Истина; КонецЕсли; КонецПроцедуры
&НаКлиенте Процедура ПриложенияПередУдалением(Элемент, Отказ) ПриложенияТекущиеДанныеПередУдалением(Элемент.ТекущиеДанные, Отказ); КонецПроцедуры </source>
И вызываем её из обработчика и из теста.
<source lang=1c> &НаКлиенте Процедура Тест_ЗапретУдаленияПриложенияОбъекта(стСитуация) Экспорт ткТестирование.ЗаполнитьСитуацию(стСитуация, "ПростойБизнесПроцесс");
стПараметры = Новый Структура("БизнесПроцесс", ткТестирование.ПолучитьОбъект(стСитуация, "БП1")); форма = ПолучитьФорму("Документ.Процесс.Форма.ФормаДокумента", стПараметры); форма.Открыть(); ткТестирование.ПроверитьОпределено(форма.ТекОбъект);
ткТестирование.ПроверитьИстину(форма.Объект.Приложения.Количество() = 1 );
отказ = ложь; текущиеДанные = форма.Объект.Приложения[0]; форма.ПриложенияТекущиеДанныеПередУдалением(текущиеДанные, отказ); ткТестирование.ПроверитьИстину(отказ);
форма.Закрыть(); КонецПроцедуры
</source>
В этом случае мы полагаемся на то что код обработчика тривиальный и в нем сложно сделать ошибку.