Регистрация  |  Вход

DML операция не проходит, но при этом выполнения теста не прерывается

странное дело,

в тесте апдатируется запись, при этом сам апдейт фейлится на неправильном для рекстриктед-лист значении, но тест не выпадает в исключение, и вообще проходит как Passed. Никаких Try-Catch  там нет.

при этом до того как запись фейлится, она заходит в тригер, где выполняет, то что нужно для теста. Т.е. покрытие ок (ниже этого по коду нет ассертации результатов). Т.е. для меня все норм.

а как же я узнал о проблеме? глянул в логи по другому поводу, а там выпавшие ДМЛ тихо пишутся как дебаг логи. так и нашел.

еще мне сегодня показалось, что дебаги, вписанные в сам тест, не видны в логе... вроде раньше это было...

странное дело,

в тесте апдатируется запись, при этом сам апдейт фейлится на неправильном для рекстриктед-лист значении, но тест не выпадает в исключение, и вообще проходит как Passed. Никаких Try-Catch  там нет.

при этом до того как запись фейлится, она заходит в тригер, где выполняет, то что нужно для теста. Т.е. покрытие ок (ниже этого по коду нет ассертации результатов). Т.е. для меня все норм.

а как же я узнал о проблеме? глянул в логи по другому поводу, а там выпавшие ДМЛ тихо пишутся как дебаг логи. так и нашел.

еще мне сегодня показалось, что дебаги, вписанные в сам тест, не видны в логе... вроде раньше это было...

Насколько я помню дебаги всегда были видны и из теста и из кода. Я часто люблю практиковать TDD и обильно все заправлять выводом в логи. Никогда не замечал проблем с этим.

Странное поведение ты описал. Мне все-таки кажется где-то на каком-то уровне абстракции у тебя есть try/catch, просто ты про него забыл. Чет я сомневаюсь что такое бывает - эксеншен есть, а тест passed.

Попробуй сделать чистый эксперимент. Сделать отдельный тест с 1 строчкой кода

insert new TwojObject__c(Field__c = 'неправильное значение');

И тогда скажи нам валится он или passed.

Насколько я помню дебаги всегда были видны и из теста и из кода. Я часто люблю практиковать TDD и обильно все заправлять выводом в логи. Никогда не замечал проблем с этим.

Странное поведение ты описал. Мне все-таки кажется где-то на каком-то уровне абстракции у тебя есть try/catch, просто ты про него забыл. Чет я сомневаюсь что такое бывает - эксеншен есть, а тест passed.

Попробуй сделать чистый эксперимент. Сделать отдельный тест с 1 строчкой кода

insert new TwojObject__c(Field__c = 'неправильное значение');

И тогда скажи нам валится он или passed.

Случайно не Database.update(...) используется?

Случайно не Database.update(...) используется?

EvAzi
Случайно не Database.update(...) используется?

кстати если там стоит флажок allOrNone то может быть.
The optional allOrNone parameter specifies whether the operation allows partial success. If you specify false for this parameter and a record fails, the remainder of the DML operation can still succeed. This method returns a result object that can be used to verify which records succeeded, which failed, and why. If the parameter is not set or is set true, an exception is thrown if the method is not successful.

[quote="EvAzi"]Случайно не Database.update(...) используется?[/quote]
кстати если там стоит флажок allOrNone то может быть.
[quote]
The optional allOrNone parameter specifies whether the operation allows partial success. If you specify false for this parameter and a record fails, the remainder of the DML operation can still succeed. This method returns a result object that can be used to verify which records succeeded, which failed, and why. If the parameter is not set or is set true, an exception is thrown if the method is not successful.[/quote]