Методика тестирования обработчиков событий

Материал из КинтВики
Перейти к: навигация, поиск


--Павел Лазарев 19:11, 11 декабря 2008 (SAMT)

Предлагается такая методика:

Например, создается обработчик события "ПередУдалением":

&НаКлиенте
Процедура ПриложенияПередУдалением(Элемент, Отказ)
	// Вставить содержимое обработчика.
КонецПроцедуры

Вызвать напрямую из теста эту процедуру можно, но не удастся установить визуальный элемент (Элемент - табличное поле) в нужное состояние.

Поэтому определяем процедуру, которую можно вызвать снаружи:

&НаКлиенте
Процедура ПриложенияТекущиеДанныеПередУдалением(ТекущиеДанные, Отказ) Экспорт
	Если Не ПустаяСтрока(ТекущиеДанные.Имя) Тогда 
		Отказ = Истина;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриложенияПередУдалением(Элемент, Отказ)
	ПриложенияТекущиеДанныеПередУдалением(Элемент.ТекущиеДанные, Отказ);
КонецПроцедуры

И вызываем её из обработчика и из теста.

&НаКлиенте
Процедура Тест_ЗапретУдаленияПриложенияОбъекта(стСитуация) Экспорт
	ткТестирование.ЗаполнитьСитуацию(стСитуация, "ПростойБизнесПроцесс");
	
	стПараметры = Новый Структура("БизнесПроцесс", ткТестирование.ПолучитьОбъект(стСитуация, "БП1"));
	форма = ПолучитьФорму("Документ.Процесс.Форма.ФормаДокумента", стПараметры);
	форма.Открыть();
	ткТестирование.ПроверитьОпределено(форма.ТекОбъект);
	
	ткТестирование.ПроверитьИстину(форма.Объект.Приложения.Количество() = 1 );
	
	отказ = ложь;
	текущиеДанные = форма.Объект.Приложения[0];
	форма.ПриложенияТекущиеДанныеПередУдалением(текущиеДанные, отказ);
	ткТестирование.ПроверитьИстину(отказ);
	
	форма.Закрыть();
КонецПроцедуры

В этом случае мы полагаемся на то что код обработчика тривиальный и в нем сложно сделать ошибку.