Я тестирую некоторый устаревший код, который расширяет объект исключения php по умолчанию. Этот код выводит пользовательское сообщение об ошибке в формате HTML.
Я хотел бы издеваться над этим объектом исключения таким образом, чтобы когда тестируемый код генерировал исключение, он просто повторял основное сообщение, а не давал мне все HTML-сообщение.
Я не могу понять, как это сделать. Похоже, вы можете протестировать явные исключения, но вы не можете изменить поведение исключения в целом, и вы также не можете смоделировать объект, который расширяет функциональные возможности php по умолчанию. (не могу придумать другого примера этого, кроме исключений... но, похоже, это так)
Я думаю, проблема в том, куда бы вы прикрепили издевательский объект ?? Кажется, что вы не можете мешать «бросить новый», и это место, где вызывается метод объекта....
Или, если бы вы могли каким-то образом использовать существующую функциональность исключения 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{
...
Итак, мой вопрос, есть ли способ справиться с этим переопределенным классом, не делая это в каждом конкретном случае? что, если я не проверяю поведение исключения, а только код, вызывающий исключение?