2011-03-17 26 views
1

私はユニットテストにPHPとsimpletestを使用しています。問題ユニット単体テストでのテスト

予期しないPHPエラーを[ヘッダー情報を変更することはできません:私がしようとするとsimpletestはすでにので、私は、次の取得ヘッダー情報を書き込まれたため、例外がスローされたクッキーに

try{ 
    setcookie($name,$cookie,$cookie_expires); 
}catch Exception($e){ 
    blah 
} 

を設定するまで、私のテストが正常に動作します - すでに(出力が/tests/simpletest/reporter.php:43で開始)]重大度が[E_WARNING] [blah_code.phpライン280]

に私はでこれをキャッチに漠然とした説明を見てきたことにより、送信されたヘッダを参照してください。誰かが実用的な例を提供するか、ドキュメントを教えてもらえますか?はっきりする。これは出力を生成するコードではなく、SimpleTestです。

答えて

1

これを回避する方法の1つは、出力バッファリングを使用することです。

PHPの設定(場合によっては.htaccess)でグローバルに有効にしたり、ob_start()とその関連機能(ob_get_clean()ob_end_flush()など)を使用できます。

ob_start(); 
// your SimpleTest here. 
// your header/ cookie manipulation here. 

そして:

ob_end_clean(); // Stop buffering and dump everything (don't echo). 
ob_end_flush(); // Stop buffering and echo out the buffer. 
ob_get_clean(); // Stop buffering and return everything as a string. 

または他の関連の機能のいずれかの例。私はあなたがしない場合、PHPのファイルの末尾にob_flush()を呼び出すと思います。

+0

同様の問題は...ファイルの先頭にob_start()を追加しても何も変わりません。 –

1

出力前に(headerの機能)setcookie($name,$cookie,$cookie_expires);を入力したときにこのエラーが発生します。

あなたはsetcookie($name,$cookie,$cookie_expires);<?php前に任意のechosまたはhtmlまたはtextか何か(もないSPACE)を持っていないことを確認してください。

+0

私のコードではなく出力を作成することは簡単なテストです。それが私がここでこの問題を提起した理由です。 – Jim

+0

@Jimごめんなさい、あなたの質問を真剣に誤解しました。 –

+0

@Jim何かを出力する前にこの 'simpletest'を使用していると思います。 –

関連する問題