PHPUnitでechoやprintなどの出力処理をテストする
テストしたいコードにechoやprintなどの出力処理がある場合、PHPUnitでどうやってテストコード書いたらいいんだろう?って調べたのでまとめておく。
テストしたいコード
<?php class Hoge { public function display() { echo 'ホゲホゲ'; } }
display()でechoでホゲホゲという文字列を出力しています。
PHPUnitのテストコード
<?php class HogeTest extends \PHPUnit_Framework_TestCase { public function testDisplay() { $hoge = new Hoge(); $this->expectOutputString("ホゲホゲ"); $hoge->display(); } }
expectOutputString()で出力される想定の文字列を設定した後に、実際に出力する処理であるdisplay()を呼び出します。
ちなみに、expectOutputString以外にもPHPUnitには出力をテストするために下記メソッドが用意されています。
- expectOutputRegex 想定される出力内容を正規表現で設定します
- setOutputCallback 想定される出力に使用されるコールバック関数を設定します。