Я тестирую некоторый устаревший код, который расширяет объект исключения php по умолчанию. Этот код выводит пользовательское сообщение об ошибке HTML.
Я хотел бы смоделировать этот объект исключения таким образом, чтобы, когда тестируемый код генерировал исключение, он просто отображал основное сообщение вместо того, чтобы давать мне полное сообщение HTML.
Я не могу найти способ сделать это. Кажется, что вы можете проверить явные исключения, но вы не можете в общем случае изменить поведение исключения, а также не можете смоделировать объект, который расширяет функциональность php по умолчанию. (не могу придумать другого примера этого, кроме исключений ... но, похоже, это так)
Полагаю, проблема в том, куда бы вы прикрепили высмеиваемый объект? Кажется, что вы не можете вмешиваться в «throw new», и это то место, где вызывается метод объекта ....
Или, если бы вы могли каким-то образом использовать существующую функциональность исключений phpunit, чтобы изменить поведение исключений так, как вы хотите, в общем случае для всего вашего кода ... но кажется, что это будет хакерским и плохим ....
РЕДАКТИРОВАТЬ: вот код, чтобы прояснить ситуацию:
class FooTest extends PHPUnit_Framework_TestCase{
public function testBar(){
include '/path/to/file.php'; //generates exception
$this->assertTrue($baz);
}
}
...
//overridden exception class
class Foo_Exception extends ErrorException{
...
Итак, мой вопрос, есть ли способ справиться с этим переопределенным классом, не делая это в каждом конкретном случае? Что делать, если я не тестирую поведение исключения, просто код, который вызывает исключение?