2012-03-14 7 views
2

プロペラモデルまたは基準オブジェクトを入力として使用するクラスをユニットテストする必要があります。プロペルクエリを含むクラスを入力としてテストする

これは自分のモデルを持たないSymfony2バンドルなので、私はどちらかの入力タイプを模倣し、静的な値を返すゲッタとセッタを提供するクラスを使うことができると思います。

これは可能ですか?どのようにこれを行うにあたって誰かの経験がありますか?私はあなたの質問の権利を取得する場合

答えて

0

は、あなたは単にスタブをしたい:

class PropelModelStub { 
    public $someparam; 

    private someMethod(){ 
     // .. 
    } 
} 

スタブは、あなたのクラスで使用されるすべてのメソッドを実装して起こっていただきまし何とか追跡する必要があります。これはあなたのクラスとあなたがテストしたいものによって異なります。関数の使用法や関数に渡される属性を追跡できます。テスト中

は、単に使用:

public function testMyClass(){ 
    $stub = new PropelModelStub(); 
    $classToTest = new MyClass($stub); 
    classToTest->whatever(); 

    $this->assertEquals('ValueIExpect', $stub->someparam); 
} 

ここでは、あなたのクラスにスタブを通過した後、あなたのコードと同じように、このクラスを使用します。その後、スタブが正しい値を持っているかどうかをチェックします。

PHPUnitのごPropelModelは、常にいくつかの基本クラスから拡張する場合、スタブ

で構築する、あなたのモックを作成するためにはPHPUnitを使用することができます。これは、物事が道容易になり、また、コードを削減:

$stub = $this->getMock('\\Namespace\\of\\PropelModel'); 
$stub ->expects($this->once()) 
->method('someMethod') 
->will($this->returnValue(1)); 

は、この詳細については、hereを参照してください。

関連する問題