Итак, это мой родительский класс для модульного тестирования (короткая версия):
<?php
class TestCaseAbstract extends PHPUnit_Framework_TestCase
{
protected $_rawPostData;
public function setUp()
{
// ...
}
/**
*
* @dataProvider provider
*/
public function testFoo($rawData)
{
// ...
}
public function provider()
{
return array(
array(''),
array($this->_rawData),
);
}
public function tearDown()
{
// ...
}
}
Это мой дочерний класс, фактический пример модульного теста:
class FooTestCase extends TestCaseAbstract
{
public function setUp()
{
$this->_rawPostData = '<?xml version="1.0"?><request><bogus /></request>';
parent::setUp();
}
}
Теперь, когда язапустить модульный тестовый пример:
.phpunit --debug FooTestCase.php
Я получил это:
.
Starting test 'FooTestCase::testFoo with data set #0 ('')'.
.
Starting test 'FooTestCase::testFoo with data set #1 (NULL)'.
.
Как видите, второй модульный тест с данными $ this -> _ rawData говорит, что он выполнялся с данными NULL.Что не так с моим кодом?Похоже, что тестовый метод не может получить доступ к защищенному свойству $ this -> _ rawData.
Я надеюсь, что моя модель наследования не испорчена.Я сделал быстрый тест, чтобы убедиться, что наследование в PHP работает так, как я думаю:
<?php
class ParentClass
{
protected $_property;
public function getProperty()
{
return $this->_property;
}
}
class ChildClass extends ParentClass
{
public function __construct()
{
$this->_property = 'Hello';
}
}
$childClass = new ChildClass();
var_dump($childClass->getProperty());
Это работает и выдает «Hello», как должно.Любые идеи, почему в моих модульных тестах поставщик данных возвращает NULL?