現在のプロジェクトで単体テストの実装を開始しました。
現在、すべての単体テストはパスしていますが、便宜上、jsonResponse
json ヘッダーも送信するようにメソッドを変更しました。これは、Chrome コンソールで json レスポンスをツリーとして表示するのに役立ちます。
現在、ユニットテストは次の理由で失敗しています
ヘッダー情報を変更できません - ヘッダーは既に送信されてい
ます (出力は [fullPath]/phpunit/src/Util/Printer.php:134 で開始されます)
@runInSeparateProcess
さらに掘り下げてみると、これは docBlocksを追加することで修正できることがわかりました。
しかし、これは次のことにつながります。
PHP 致命的なエラー: クラス 'PHPUnit_Util_Configuration' が見つかりません - 365 行目
PHP スタック トレース:
PHP 1. {main}() -:0
これは私のjsonメソッドの1つです(これは、AJAXリクエストを通じて呼び出されるいくつかのメソッドの最後に呼び出されます):
/**
* Helper function to print a json encoded success message back to the frontend.
*
* @param array $returnData
*
* @return bool
*
* @runInSeparateProcess
*/
public function returnJsonSuccess($returnData = [])
{
header('Content-Type: application/json');
echo json_encode(
[
"success" => true,
"data" => $returnData,
]
);
return true;
}
では、本題に入りますが、どうすればこれを適切に機能させることができますか?
私のオプションの 1 つは、メソッドが単体テストから呼び出されたかどうかを検出し、正常に呼び出された場合にのみヘッダーを条件付きで送信することです。最も簡単な方法は、ブートストラップ ファイルで環境変数または定数を定義し、BaseController
.
json ヘッダーの送信を維持しながら、単体テストを再び機能させるためのよりクリーンな方法はありますか?