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