Сценарий: Записали платежное поручение в видом операции “Возврат покупателю”
Дано Документ платежное поручение
Когда я устанавливаю вид операции “Возврат покупателю”
И записываю документ
Тогда появляется запись регистрации документа
И документ не учитывается для расчета показателей
Как красиво сделать тестирование через поведение по программному созданию документа?
Не совсем понятно, что Вы хотите проверить? Что движения у документа создались?
Не совсем движения. Факт регистрации, запись в РС.
Если писать сценарий как я привел - раскидывает все по куче методов, как-то не очень нравится.
Тем более я должен буду заполнять документ в нескольких методах, не нравится.
а обязательно через поведение? в том плане, что для таких проверок логичнее и “дешевле” использовать юнит.
просто если про поведение для пользователя, то для шага
“Тогда появляется запись регистрации документа” проверка будет типа:
я открываю отчет о движениях документа
и табличный документ отчета равен …
Аналогично пользователь же как-то проверяет глазами шаг
“И документ не учитывается для расчета показателей”
но всё то же самое можно проверить и “программно”, т.е. считать набор записей, убедиться, что он совпадает с эталоном
ну т.е. можно использовать BDD для “программных” проверок, без работы с интерфейсом, но это тупо дольше выполняется, чем юниты.
Хотелось попробовать присобачить поведение. т.к. описание сценариев на аля геркин более читабельное
Когда я делаю "что то"
То получаю "Результат"
Если нет необходимости расписывать весь процесс досконально используйте 2 шага. В первом вы вызываете создание + проведение (все необходимые операции) документа, во втором проверяете, что создание документа завершилось успешно (по вашему мнению)
@ret-Phoenix У тебя нормальный бизнес-сценарий, ну почти.
для реализации его достаточно.
заполнение документа в нескольких местах - не вижу проблемы в этом, это же нормально.
А с кучей методов не совсем понял.
ты про полученные методы-шаги тестирования во внешней обработке?
разбиение на шаги, напротив, очень хорошо работает и позволяет логику точнее выделять.
1 Расшифруй, что именно тебе не нравится.
2 И просто попробуй реализовать эти шаги и посмотри на результат.
3 Также подумай, как бы ты написал тест кодом и сравни 2 сценария и их шаги для фич и тестов через код.
Они не должны сильно различаться на самом деле
Да, так и сделал.
Всплыл другой прикол - Транзакции
&НаСервере
Процедура ПередНачаломСценарияНаСервере() Экспорт
НачатьТранзакцию();
КонецПроцедуры
&НаСервере
Процедура ПередОкончаниемСценарияНаСервере() Экспорт
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
// Процедура выполняется перед началом каждого сценария
Процедура ПередНачаломСценария() Экспорт
ПередНачаломСценарияНаСервере();
КонецПроцедуры
&НаКлиенте
// Процедура выполняется перед окончанием каждого сценария
Процедура ПередОкончаниемСценария() Экспорт
ПередОкончаниемСценарияНаСервере();
КонецПроцедуры
Это не спасает. Документ сохраняется в базе.
Пробовал отключить начало/отмену в своем коде и включить в вызове, передав параметру Транзакция истина - не помогает.
Add 5.6.0
БП 3 переработанная
Вы не можете транзакции сохранять между серверными вызовами: они так не работают.
Спасибо, а ведь точно. Забыл совсем. если тесты гонять с транзакциями надо через модуль объекта работать.
По транзакциям если еще и механизм менеджер/клиент тестирования (“кнопконажималку”) задействуете, то там это вовсе разные сеансы
Кнопконажималка - след.этап. Учту.