Your browser (Internet Explorer 6) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.
X
Post

Zend_Testでdispatchする時の注意点

Zend Frameworkネタです。
先日の0.3.0でZend_Testのサンプルを組み込んだのですが、
この時に見つかった問題点です。


Zend_Testではパスを指定してdispatchを実行し、
ルーティングが想定通りに行われているか、
あるいは出力されるテキスト内の要素の確認を行ってテストを行います。

しかしこのとき、次のようなエラーが発生する事があります。

Caused by
Cannot modify header information - headers already sent by (output started at /path/to/pear/PHPUnit/Util/Printer.php:172)

つまり、すでにテキストの出力が開始されているので
headerは受け付けられないという事です。

普通にディスパッチをする時は
出力処理は最後になるため気にする事はありませんが、
PHPUnitで処理をする時はディスパッチを始める前に
出力が始まっているためheaderを出力しないようにしなくてはなりません。

・通常のhttpアクセス時にはheaderをセットする
・Zend_Testでdispatchした時にはheaderをセットしない

という形での条件分けが必要になります。
定数IS_TESTという値を定義しており、
PHPUnitの場合にtrueとなる値であるので次のように分岐を書きます。

if(!IS_TEST){
    // headerをセットする処理
}

とりあえずはこんな感じで、
headerの出力の有無を切り換えています。

しかしいちいちヘッダをセットしている箇所にこの条件分岐を設定するのも非効率なので、
何かもっと綺麗な記述方法があったらそれに差し替える予定です。

TrackBack URL :

Leave a comment  

name

email

website

Submit comment