【发布时间】:2010-07-14 14:55:13
【问题描述】:
我想测试一个抽象类的方法。在这个类中是否有一个静态的抽象方法。
我使用 PHPUnit。使用普通的抽象方法它可以工作:
<?php
abstract class AbstractClass
{
public function concreteMethod()
{
return $this->abstractMethod();
}
public abstract function abstractMethod();
}
class AbstractClassTest extends PHPUnit_Framework_TestCase
{
public function testConcreteMethod()
{
$stub = $this->getMockForAbstractClass('AbstractClass');
$stub->expects($this->any())
->method('abstractMethod')
->will($this->returnValue(TRUE));
$this->assertTrue($stub->concreteMethod());
}
}
?>
phpunit file.php 有效。
但如果 abstractMethod 是静态的,它会显示:
PHP 致命错误:类 Mock_AbstractClass_6332ae11 包含 1 个抽象方法,因此必须声明为抽象方法或在 /usr/local/apache2/php5.3/lib/php/PHPUnit/Framework/ 中实现其余方法 (AbstractClass::abstractMethod) TestCase.php(1135) : eval()'d 代码在第 33 行
【问题讨论】:
标签: php static phpunit mocking abstract