Я немного спотыкаюсь найти способ проверить, что мой обработчик исключений вызывается при вызове Exception.Как протестировать обработчик исключений с помощью phpspec
Это идея, что я изначально работал с для тестирования:
class ClientSpec extends ObjectBehavior
{
function it_should_catch_exceptions(Config $config)
{
$e = new Exception('test exception');
$this->catchException($e)->shouldBeCalled();
throw $e;
}
}
Client
имеет метод catchException
, который будет установлен в качестве обработчика исключений через set_exception_handler
: http://php.net/set_exception_handler.
Запуск этот тест дает мне эту обратную связь: no beCalled([array:0]) matcher found for null
, поэтому я также пытался сделать создать спецификации для Exception
и сделайте следующее:
class ExceptionSpec extends ObjectBehavior
{
function it_should_trigger_opbeat_client_when_thrown(Client $client)
{
$client->catchException($this)->shouldBeCalled();
throw $this->getWrappedObject();
}
}
Но работает этот тест возвращает другую ошибку: exception [exc:Exception("")] has been thrown
Как проверить, вызван ли мой обработчик исключений?
Спасибо за ваш ответ. Я схожу с ума, пытаясь найти решение этой проблемы. в то время как ответ разочарование, он предложит мне найти а, для решения этой проблемы. –
Здесь есть два аспекта: во-первых, вы хотите проверить, что обработчик исключений выполняет свою работу должным образом. Вы можете использовать 'phpspec' или другой инструмент тестирования, чтобы проверить поведение функции обработчика, вызвав его напрямую с правильным аргументом. Во-вторых, проверенный вами тест проверяет правильность установки обработчика. Установка его не должна отвечать самому классу «Клиент». Он должен быть частью бутстрапа приложения на том же уровне, что и установка автоматической загрузки. И вы можете просто положиться на то, что PHP вызовет ваш обработчик, если он установлен. – axiac