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

Материал из КинтВики
Версия от 10:10, 7 октября 2010; Павел Лазарев (обсуждение | вклад) (Новая страница: «Категория:Примеры кода 1С --Павел Лазарев 19:11, 11 декабря 2008 (SAMT) ...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


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

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

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

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

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

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

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

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

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

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

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