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