Я хотел бы протестировать метод из абстрактного класса. В этом классе есть абстрактный метод со статичностью.
Я использую 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 абстрактный метод и поэтому должен быть объявлен абстрактным или реализовать остальные методы (AbstractClass::abstractMethod) в /usr/local/apache2/php5.3/lib/php/PHPUnit/Framework/TestCase.php (1135): код eval() в строке 33