2010-11-19 12 views
1

私は現在、ajax呼び出しを管理し、ディスパッチするPHP用の簡単なフレームワークを開発中です。その特徴の1つは、バックエンドで何が起きているかによって自動的に適切なヘッダーを送信することです。過去数日間、私はPHPUnitの単体テストをたくさん書き始めました。まともなものを手に入れようとしていますcode coverageコードのカバレッジがローカルで実行されない

しかし、私の知る限り、PHPの実行時にヘッダをチェック/チェックすることはできませんので、 CLIモードの場合、ローカルWebサーバーを介して多くのテストを実行する必要があります。これにより、ヘッダとレスポンスボディを簡単にチェックすることができます。残念なことに、これらのテストで実行されたコードは当然、PHPUnitによって追跡されません。 (ローカルでチェックできるコードはすべてローカルでチェックされていますが、ヘッダーに関連するものはすべてそのカテゴリに該当しません)。

私はheader()コールをカプセル化して置き換えることができますそれはモックオブジェクトを使ったテスト中です。しかし、私はヘッダ置換のロジック全体を再実装しなければならないだろうし、その潜在的な癖やバグは何もないので、実際に起こっていることではなく、自分自身でheader()の実装をテストすることになるだろう。私はしないでくださいしたいです。

私の質問はこれだと思います。コードカバレッジレポートにこれらの「リモートコール」を含めることはできますか?実際の状況でテストするためには、100%のコードカバレッジを逃してしまったという事実を受け入れなければなりませんか?

答えて

0

どうやら、方法はありません。

ircmaxellの回答は面白かったのですが、実際には私の質問には答えられませんでした。

0

実際、コードベース全体に対して100%のカバレッジを得ることは実際には不可能です。あなたが本当に望むのは、アプリケーションの中核にある100%です(ライブラリと再利用コンポーネント)。残りの部分はテストするのが大変ですが、テストするのが非常に難しい状況がある場合は、テストできない数行のコードで自分自身を強調しないでください。

あなたの特定の問題については、私はそのような種類の単体テストを書くことさえできません。私が書いたのはSelenium HQを使ったUIテストです。それはまだ完全に自動化されており、PHPUnitから実行されますが、1つ以上のブラウザを使用します。単体テストよりも実際には統合テストや受験テストのほうが多いですが、それは非常にうまくいきます...

+0

私はSeleniumの経験がありますが、それは素晴らしいツールですが、ここでは実際には適用されません。多分私は自分の問題をどのように記述しているのか分からなかったでしょう。 – n3rd

+0

[Googleのグループ](http://stackoverflow.com/questions/679218/best-way-to-inspect-http-response-headers-with-selenium) ://groups.google.com/group/selenium-users/browse_thread/thread/3e9e08000e58ccd1/1205af3c6b161cc4?pli = 1)...しかし、別の方法で問題を説明したい場合は、助けてください... – ircmaxell

+0

私はヘッダやレスポンス自体にアクセスしたりテストしたりするのに問題はありません。私はZend_Http_Clientを使っています。私は本当にセレンがこの特別なケースで何を提供しなければならないかを見ていません。 – n3rd

関連する問題