FWIW 我正在使用 SimpleTest 1.1alpha。
我有一个单例类,我想编写一个单元测试,通过尝试实例化该类(它有一个私有(private)构造函数)来保证该类是单例。
这显然会导致 fatal error :
Fatal error: Call to private FrontController::__construct()
有什么方法可以“捕获”该 fatal error 并报告已通过测试吗?
最佳答案
没有。 fatal error 停止脚本的执行。
并没有必要以那种方式测试单例。如果你坚持检查构造函数是否是私有(private)的,你可以使用 ReflectionClass:getConstructor()
public function testCannotInstantiateExternally()
{
$reflection = new \ReflectionClass('\My\Namespace\MyClassName');
$constructor = $reflection->getConstructor();
$this->assertFalse($constructor->isPublic());
}
另一件需要考虑的事情是单例类/对象是 TTD 中的一个障碍,因为它们很难模拟。
关于PHP 单元测试 : Is it possible to test for a Fatal Error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4753811/