Я пытаюсь проверить захват и обработку настраиваемого исключения в PHP.PHPUnit - сбрасывание, захват и обработка пользовательских исключений
Я расширил базовый тип исключения с некоторыми дополнительными свойствами и методами.
Один из классов, с которым я сталкиваюсь, может генерировать исключение, я хочу иметь возможность проверить, что я правильно фиксирую и обрабатываю это исключение (что в данном случае означает создание объекта ответа для возврата из вызова) ,
например.
try {
$objectBeingStubbed->doSomething();
} catch (\Exception $ex) {
if ($ex instanceof CustomExceptionType) {
$this->_errorResponse->error->message = $exception->getMessage();
$this->_errorResponse->error->code = $exception->getCode();
$this->_errorResponse->error->data = $exception->getData();
} else {
throw $ex;
}
}
Я пытался имитировать исключение броска с:
$objectStub->expects($this->any())
->method('doSomething')
->will($this->throwException(new CustomExceptionType()));
Но когда исключение прибывает в классе я проверяю, что теперь экземпляр «Mock_ErrorResponse _ ????» который не расширяет мое пользовательское исключение. Мое исключение вместо этого содержится в свойстве «$ exception» в Mock_ErrorResponse.
Есть ли способ обработки этого, не будучи вынуждены делать что-то ужасное, как:
if ($ex instanceof PHPUnit_Framework_MockObject_Stub_Exception) {
$ex = $ex->exception;
}
if ($ex instanceof CustomExceptionType) {
...
Внутри класса я тестирование?
спасибо за подсказку на другую структуру попробовать/поймать. Я пробовал это снова сегодня утром, и он работал, как ожидалось, не смог повторить проблему, которую я имел прошлой ночью. Я собираюсь положить его на глупую ошибку где-то с конца дня усталость. Спасибо еще раз за помощь! – Dan