Closed nixel2007 closed 5 years ago
@EvilBeaver тесты падают с таким вот странным эксепшеном (приходяшим из движка - точнее рефлектора)
{Модуль C:\Users\user\AppData\Local\ovm\current\lib\asserts\src\bdd-asserts.os / Ошибка в строке: 336 / [Failed] Ожидали, что Вставить ВЫБРОСИТ ИСКЛЮЧЕНИЕ СОДЕРЖАЩЕЕ ТЕКСТ <Недостаточно фактических параметров>, а был текст <{Модуль C:\Users\user\AppData\Local\ovm\current\lib\asserts\src\bdd-asserts.os / Ошибка в строке: 257 / Внешнее исключение (System.ArgumentNullException): Значение не может быть неопределенным.
Имя параметра: key}>.
Стек трейс:
C:\Users\user\AppData\Local\ovm\current\lib\asserts\src\bdd-asserts.os / Метод ВыбрасываетИсключение / Строка 268
C:\Users\user\AppData\Local\ovm\current\lib\asserts\tests\bdd-assertions-tests.os / Метод ТестДолжен_Проверить_ЧтоВыбрасываетсяИсключение / Строка 280
C:\Users\user\AppData\Local\ovm\current\lib\asserts\tests\bdd-assertions-tests.os / Метод $entry / Строка 290}
При желании можно обернуть на проверку версии оскрипта (метод ПолучитьСтекВызовов есть только в 1.0.21 и новее), либо явно повысить требуемую версию движка (что предпочтительнее)
Да, лучше повысить требования к версии
А подробное представление ошибки не подойдет вместо использования стека вызовов?
Правда, здесь движковые ошибки могут прилетать.
Предлагаю код чуть-чуть упростить - вместо ручного слияния строк в конце использовать тот же массив СтекТрейс
СтекТрейс = Новый Массив;
СтекТрейс.Добавить(ТекстИсключения);
СтекТрейс.Добавить("Стек трейс:");
Для Каждого КадрСтекаВызовов Из СтекВызовов Цикл
...
КонецЦикла;
ВызватьИсключение СтрСоединить(СтекТрейс, Символы.ПС);
Я думал об этом, но тогда имя переменной врет. Надо либо её переименовывать, либо оставлять как есть.
Подробное представление ошибки не отдает стек трейс, емнип. Максимум дерево причин (из информации об ошибке)
Я думал об этом, но тогда имя переменной врет. Надо либо её переименовывать, либо оставлять как есть.
Переименовать легче по принципу бойскаута
Подробное представление ошибки не отдает стек трейс, емнип.
недавно добавлялся метод ПодробноеПредставление (или что-то подобное), который как раз и показывает стек-трейс движка.
мне @EvilBeaver показывал как раз для ассертов - кажется, Формат или другой метод падал, и на основании стек-трейса я смог сделать исправляющий пулл-реквест
@EvilBeaver ты понимаешь, о чем Артур?
@artbear вроде концептуально смысл пр это не поменяет, да? Переменную поправлю только завтра уже.
@artbear готово.
@nixel2007 я не очень понял.. Какое-то исключение откуда-то прилетает? Надо что-то фиксить в движке?
@artbear: недавно добавлялся метод ПодробноеПредставление (или что-то подобное), который как раз и показывает стек-трейс движка.
Нет, метод ПодробноеОписаниеОшибки / DetailedDescription() был всегда и он показывает стектрейс уровня C#, не 1С.
Поведение 1С-ного метода ПодробноеПредставлениеОшибки
не менялось. Стектрейс туда не включается.
@nixel2007 я не очень понял.. Какое-то исключение откуда-то прилетает? Надо что-то фиксить в движке?
@EvilBeaver да. попробуй запустить тестирование через 1testrunner -runall tests. словишь эксепшен как у меня. вероятнее всего в мастере/девелопе тоже вылетит, т.к. я не менял код, который падает.
Нет, метод ПодробноеОписаниеОшибки / DetailedDescription() был всегда и он показывает стектрейс уровня C#, не 1С.
Поведение 1С-ного метода ПодробноеПредставлениеОшибки не менялось. Стектрейс туда не включается.
@EvilBeaver @nixel2007 Подозреваю, что подробное представление стек-трейса полезно не только для утверждений текущего пакета, но и в других случаях, пакетах, скриптах.
Предлагаю добавить показ стек-трейса 1С в одном из методов движка.
Например, к методу ПодробноеОписаниеОшибки / DetailedDescription() в дополнение к стеку C# или в ПодробноеПредставлениеОшибки или еще куда-нибудь в движок.
Выглядит вот так:
При желании можно обернуть на проверку версии оскрипта (метод ПолучитьСтекВызовов есть только в 1.0.21 и новее), либо явно повысить требуемую версию движка (что предпочтительнее)