Как красиво сделать тестирование через поведение по программному созданию документа?


#1

Сценарий: Записали платежное поручение в видом операции “Возврат покупателю”
Дано Документ платежное поручение
Когда я устанавливаю вид операции “Возврат покупателю”
И записываю документ
Тогда появляется запись регистрации документа
И документ не учитывается для расчета показателей


#2

Не совсем понятно, что Вы хотите проверить? Что движения у документа создались?


#3

Не совсем движения. Факт регистрации, запись в РС.
Если писать сценарий как я привел - раскидывает все по куче методов, как-то не очень нравится.
Тем более я должен буду заполнять документ в нескольких методах, не нравится.


#4

а обязательно через поведение? в том плане, что для таких проверок логичнее и “дешевле” использовать юнит.

просто если про поведение для пользователя, то для шага
“Тогда появляется запись регистрации документа” проверка будет типа:
я открываю отчет о движениях документа
и табличный документ отчета равен …

Аналогично пользователь же как-то проверяет глазами шаг
“И документ не учитывается для расчета показателей”

но всё то же самое можно проверить и “программно”, т.е. считать набор записей, убедиться, что он совпадает с эталоном


#5

ну т.е. можно использовать BDD для “программных” проверок, без работы с интерфейсом, но это тупо дольше выполняется, чем юниты.


#6

Хотелось попробовать присобачить поведение. т.к. описание сценариев на аля геркин более читабельное


#7
Когда я делаю "что то" 
То получаю "Результат"

Если нет необходимости расписывать весь процесс досконально используйте 2 шага. В первом вы вызываете создание + проведение (все необходимые операции) документа, во втором проверяете, что создание документа завершилось успешно (по вашему мнению)


#8

@ret-Phoenix У тебя нормальный бизнес-сценарий, ну почти.

для реализации его достаточно.

заполнение документа в нескольких местах - не вижу проблемы в этом, это же нормально.

А с кучей методов не совсем понял.
ты про полученные методы-шаги тестирования во внешней обработке?

разбиение на шаги, напротив, очень хорошо работает и позволяет логику точнее выделять.

1 Расшифруй, что именно тебе не нравится.

2 И просто попробуй реализовать эти шаги и посмотри на результат.

3 Также подумай, как бы ты написал тест кодом и сравни 2 сценария и их шаги для фич и тестов через код.
Они не должны сильно различаться на самом деле :slight_smile:


#9

Да, так и сделал.


#10

Всплыл другой прикол - Транзакции

&НаСервере
Процедура ПередНачаломСценарияНаСервере() Экспорт
	НачатьТранзакцию();
КонецПроцедуры

&НаСервере
Процедура ПередОкончаниемСценарияНаСервере() Экспорт
	Если ТранзакцияАктивна() Тогда
		ОтменитьТранзакцию();
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
// Процедура выполняется перед началом каждого сценария
Процедура ПередНачаломСценария() Экспорт
	ПередНачаломСценарияНаСервере();
КонецПроцедуры

&НаКлиенте
// Процедура выполняется перед окончанием каждого сценария
Процедура ПередОкончаниемСценария() Экспорт
	ПередОкончаниемСценарияНаСервере();
КонецПроцедуры

Это не спасает. Документ сохраняется в базе.
Пробовал отключить начало/отмену в своем коде и включить в вызове, передав параметру Транзакция истина - не помогает.

Add 5.6.0
БП 3 переработанная


#11

Вы не можете транзакции сохранять между серверными вызовами: они так не работают.


#12

Спасибо, а ведь точно. Забыл совсем. если тесты гонять с транзакциями надо через модуль объекта работать.


#13

По транзакциям если еще и механизм менеджер/клиент тестирования (“кнопконажималку”) задействуете, то там это вовсе разные сеансы


#14

Кнопконажималка - след.этап. Учту.