0

コンストラクターを使用して、オブジェクト インスタンスの作成時に値を格納する DummyClass クラスがあります。

class DummyClass
{
    private $foo = '';

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

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

次に、setUp() を使用して DummyClass のインスタンスを構築するテスト クラス DummyTest を取得します。次に、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 でテストを実行すると、エラーが発生します。

致命的なエラー: 16 行目の C:\wamp\www\DummyTest.php の非オブジェクトでメンバー関数 getFoo() を呼び出します

$instance が test__construct() のオブジェクトではないのはなぜですか? どうすればこの問題を解決できますか?

4

1 に答える 1

0

を使用してクラスのオブジェクトにアクセスできますthis。これをチェックして、

public function test__construct()
{
    //$foobar = $instance->getFoo(); 
    $foobar = $this->instance->getFoo(); 
    $this->assertEquals($foobar, $foo);
}
于 2013-03-01T12:21:21.537 に答える