1
所以这是我的单元测试(精简版)的父类:不能在父类访问子属性(调用方法从子对象的父继承)
<?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());
这个工作并输出“你好”,因为它应该。任何想法为什么在我的单元测试数据提供程序返回NULL?
谢谢。我会试一试。请给我几天时间来尝试一下,如果它有效,我会接受你的答案。这是我的个人项目,在工作周期间我没有太多时间来处理它;)干杯。 – 2012-02-06 22:46:33