2015-04-20 2 views
1

Вы проверили бы собственный обработчик исключений в php? Например, у меня есть следующие:Как вы можете протестировать собственный обработчик исключений в php?

<?php 

namespace Freya\Exceptions; 

/** 
* Custom exception handler. 
* 
* Instantiate with: 
* 
* <pre> 
* new Freya\Exceptions\ExceptionHandler(); 
* </pre> 
* 
* This is a dependency in the Freya-Loader package and is instantiated for you in the constructor of the auto loader. 
* 
* @package Freya\Exceptions 
*/ 
class ExceptionHandler { 

    /** 
    * Set up the exception handler. 
    */ 
    public function __construct() { 
     set_exception_handler(array($this, 'exceptionHandler')); 
    } 

    /** 
    * Create the exception handler. 
    * 
    * Start with the message that was produced. Then provide a stack trace. 
    */ 
    public function exceptionHandler($exception) { 
     echo $exception->getMessage(); 
     echo '<br />'; 
     echo '<pre> ' . $exception->getTraceAsString() . ' </pre>'; 
    } 
} 

Я хотел бы, чтобы убедиться, что, когда исключение из положить совпадает с функцией exceptionHandler. Я действительно не уверен, должен ли я тестировать этот класс.

идеи?

+0

вещи «бросить» Что-нибудь? » –

+0

Это проверяет, что возникает ошибка, а как насчет содержимого этой ошибки, чтобы убедиться, что трассировка стека и сообщение напечатаны? или я должен даже тестировать этот класс? – TheWebs

ответ

3

Вы можете технически протестировать свой класс, выбросив произвольное исключение и вручную проверив вывод.

Автоматические повторяющиеся тесты для класса выполняются путем передачи new Exception(); классу ExceptionHandler и проверки вывода. Вы можете протестировать конструктор, вызвав $lastHandler = set_exception_handler(null);, чтобы убедиться, что последний обработчик заданий был вашим обычным.

Из этих двух тестов вы можете быть уверены, что PHP выполнил свои собственные модульные тесты, чтобы гарантировать, что работает set_exception_handler.

Смежные вопросы