Тестирование предупреждений (warnings), передаваемых через trigger_error
, вызывает предупреждение об устаревании в PHPUnit 9+.
Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10
Тестирование E_USER_WARNING
и E_WARNINGM
больше не будет возможным, в пользу брошенных исключений. Ни один из обычных трюков конфигурации convertWarningsToExceptions
не работает.
Вот фрагмент, который может помочь:
$errored = null;
set_error_handler(function($errno, $errstr, ...$args) use (&$errored) {
$errored = [$errno, $errstr, $args];
restore_error_handler();
});
call_error_triggering_function();
$this->assertNotNull($errored, 'did not trigger any warning');
[$errno, $errstr, $args] = $errored;
$this->assertEquals(E_USER_WARNING, $errno, 'did not trigger an E_USER_WARNING');
Тот факт, что в PHPUnit 10 мы даже не увидим предупреждений и исправлений, просто ужасает!
Таков путь!
Источник: Testing Warnings in PHPUnit 9+.
Источник: https://www.kobzarev.com/programming/testing-warnings-in-phpunit-9/