2016-09-16 5 views
4

私は致命的ではない通知を発行するクラスを持っている:テスト時に通知を表示するにはどうすればよいですか?

class MyClass { 
    public function foo(){ 
     trigger_error('Notice this message.', E_USER_NOTICE); 
     return true; 
    } 
} 

は、ここで基本的なユニットテストです:

class MyClassTest extends PHPUnit_Framework_TestCase { 
    public function testCanFoo(){ 
     $obj = new MyClass; 
     $this->assertTrue($obj->foo()); 
    } 
} 

当然PHPUnitは、キャッチされなかったとして、必ずしもテストを失敗した例外の中にこの通知を変換し、エラー。

There was 1 error:

1) MyClassTest::testCanFoo
Notice this message.

まず、私は、私はこの通知を読むことができることを愛していることを指摘してみましょう、とこのは、私が欲しいものをテストを失敗することなくしかしです。

私はdocblockで渡すためのテストを受けることができます知っています。

class MyClassTest extends PHPUnit_Framework_TestCase { 
    /** 
    * @expectedException PHPUnit_Framework_Error_Notice 
    */ 
    public function testCanFoo(){ 
     $obj = new MyClass; 
     $this->assertTrue($obj->foo()); 
    } 
} 

しかし、この通知は完全に呑み込まれます。

PHPUnit 5.5.4 by Sebastian Bergmann and contributors.

. 1/1 (100%)

Time: 17 ms, Memory: 4.00MB

OK (1 test, 1 assertion)

私はにそれを得ることができますどのように両方のはテストを合格とは、通知メッセージを表示?

+0

[この質問](http://stackoverflow.com/questions/8412746/ignoring-the-php-warnings-in-phpunit)これにいくつかの有用な情報があるように見えます。 –

+0

ありがとうございます@ Don'tPanic私は実際にその質問に出くわしましたが、どちらも私のdocblockソリューションの代替手段です。 –

+0

ああ、そうだ。例外に変換しないと表示されないかどうかわからなかった。 –

答えて

1

あなたは、このように例外への変換を無効にすることができます

class MyClassTest extends PHPUnit_Framework_TestCase { 
    public function testCanFoo(){ 
     // disable conversion into exception 
     PHPUnit_Framework_Error_Notice::$enabled = false; 
     $obj = new MyClass; 
     $this->assertTrue($obj->foo()); 
    } 
} 
+0

どうもありがとうございました。 –

関連する問題