2013-03-01 24 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