Этот вопрос специфичен для использования PHPUnit.
PHPUnit автоматически преобразует ошибки php в исключения. Есть ли способ проверить возвращаемое значение метода, который запускает ошибку php (встроенные ошибки или пользовательские ошибки с помощью trigger_error)?
Пример кода для проверки:
function load_file ($file)
{
if (! file_exists($file)) {
trigger_error("file {$file} does not exist", E_USER_WARNING);
return false;
}
return file_get_contents($file);
}
Это тип теста, который я хочу написать:
public function testLoadFile ()
{
$this->assertFalse(load_file('/some/non-existent/file'));
}
Проблема, с которой я столкнулась, заключается в том, что вызванная ошибка приводит к сбою моего unit test (как следует). Но если я попытаюсь поймать его или установить ожидаемое исключение, то любой код, который после срабатывания ошибки будет выполнен, никогда не будет выполняться, поэтому у меня нет возможности проверить возвращаемое значение метода.
Этот пример не работает:
public function testLoadFile ()
{
$this->setExpectedException('Exception');
$result = load_file('/some/non-existent/file');
// code after this point never gets executed
$this->assertFalse($result);
}
Любые идеи, как я мог бы это достичь?