У меня есть абстрактный класс, в котором есть общие методы, которые я хочу протестировать, поэтому мне не нужно постоянно тестировать их в каждом классе, который расширяет этот класс.
abstract class Class1 implements iClass1
{
const VALUE = 'A';
private $Return;
public function __construct($Field = NULL)
{
if( ! is_null($Field) )
$this->SetField($Field);
}
public function GetField()
{
return $this->Return;
}
public function SetField($Field)
{
if (strlen($Field) != 3)
throw new CLASS1_EXCEPTION('Field "' . $Field . '" must be 3 digits.');
$this->Return = $FieldCode;
}
abstract function CalculateData();
}
Я хочу создать базовый тестовый пример, который будет проверять конструктор, GetField и другие функции, а затем другие мои тестовые файлы смогут тестировать абстрактные функции.
Я хочу иметь возможность проверить, что константа не изменилась, поле выдает исключение и т. д.
ТЕСТ:
class TEST_CLASS1 extends PHPUnit_Framework_TestCase
{
protected function setUp()
{
require_once('CLASS1.php');
}
public function testConstants()
{
$this->assertEquals(CLASS1, 'A');
}
/* @expectedException CLASS1_EXCEPTION
public function testLargeFieldException()
{
$class1 = new CLASS1('ABCD');
$class1 = new CLASS1();
$class1->SetField('ABCD');
}
}
Как мне создать тесты, так как я не могу создать объект CLASS1 как есть абстрактный класс?