如何在 php 中对自定义异常处理程序进行单元测试?
How do you unit test a custom exception handler in 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
函数的匹配。我真的不确定我是否应该测试这个 class.
想法?
您可以通过抛出任意异常并手动验证输出来从技术上测试您的 class。
通过将 new Exception();
传递给您的 ExceptionHandler
class 并验证输出,可以对 class 进行自动化、可重复的测试。您可以通过调用 $lastHandler = set_exception_handler(null);
来测试构造函数,以验证最后设置的处理程序是否是您的自定义处理程序。
从这两个测试中,您可以放心,PHP 已经完成了自己的单元测试以确保 set_exception_handler
有效。
您会在 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
函数的匹配。我真的不确定我是否应该测试这个 class.
想法?
您可以通过抛出任意异常并手动验证输出来从技术上测试您的 class。
通过将 new Exception();
传递给您的 ExceptionHandler
class 并验证输出,可以对 class 进行自动化、可重复的测试。您可以通过调用 $lastHandler = set_exception_handler(null);
来测试构造函数,以验证最后设置的处理程序是否是您的自定义处理程序。
从这两个测试中,您可以放心,PHP 已经完成了自己的单元测试以确保 set_exception_handler
有效。