2017-01-27 6 views
0

関数に渡されたメッセージを正確に出力しなければならない "log"関数を持つ "Debug"クラスがあるとします。それをテストする良い方法はありますか?バッファは、メソッドが何かをエコーするかどうかをテストする正しい方法ですか?

class DebugTest extends PHPUnit_Framework_TestCase 
{ 
    public function test() 
    { 
     ob_start(); 

     $d = new Debug; 

     $d->log('foo'); 

     $this->assertEquals(
      'foo', 
      ob_get_clean() 
     ); 
    } 
} 

代替手段はありますか?

答えて

2

best way(2017年現在)テストコードの出力をチェックする機能expectOutputString()使用することです:expectOutputString()はあなたのためのバッファリングのトリックを行い、シーンの背後に

class DebugTest extends PHPUnit_Framework_TestCase 
{ 
    public function test() 
    { 
     // Set the expectation 
     $this->expectOutputString('foo'); 

     // Run the tested code 
     $d = new Debug; 
     $d->log('foo'); 
    } 
} 

を。
このメソッドは、5年以上前にリリースされたPHPUnit 3.6.0以降で利用可能です。

関連する問題