2013-03-01 117 views
0

我有一個類,DummyClass,其存儲被創建的對象實例時的值,使用構造:對象實例變爲非對象在測試功能

class DummyClass 
{ 
    private $foo = ''; 

    function __construct($foobar) 
    { 
     $this->foo = $foobar; 
    } 

    public function getFoo() { return $foo; } 
} 

然後我有一個測試類DummyTest,它使用setUp()構造DummyClass的一個實例。然後,在test__construct(),它聲稱自己的財產,$ foo的,並從DummyClass實例返回的變量,都是平等的:

require_once 'DummyClass.php'; 

class DummyTest extends PHPUnit_Framework_TestCase 
{ 
    public $instance = NULL; 
    public $foo; 

    public function setUp() 
    { 
     $foo = 'bar'; 
     $this->instance = new DummyClass($foo); 
    } 

    public function test__construct() 
    { 
     $foobar = $instance->getFoo(); 
     $this->assertEquals($foobar, $foo); 
    } 

} 

然而,當我在PHPUnit的運行測試中,我得到的錯誤:

Fatal error: Call to a member function getFoo() on a non-object in C:\wamp\www\DummyTest.php on line 16

$ instance如何不是test__construct()中的對象,我該如何解決這個問題?

+0

$ foobar = $ this-> instance-> getFoo(); NOT $ foobar = $ instance-> getFoo(); – 2013-03-01 12:19:17

+0

也不是'public function getFoo(){return $ foo; }'but'public function getFoo(){return $ this-> foo; } – jasir 2013-03-01 12:21:02

+0

感謝您分享這些信息。我也首先想到了這一點。 – 2013-03-01 13:09:54

回答

0

您可以使用this訪問類的對象。檢查這個,

public function test__construct() 
{ 
    //$foobar = $instance->getFoo(); 
    $foobar = $this->instance->getFoo(); 
    $this->assertEquals($foobar, $foo); 
} 
+0

謝謝。這幫助我做這個測試工作。我沒有意識到我需要在存儲屬性和訪問它們時使用$ this->兩者。 – 2013-03-01 12:30:26