はじめに
PHPUnitのテストコードを書いてresponseに変数が入らなかった時のメモです。
※PHPUnitを用いてITに近い形で行っています。
環境
FuelPHP 1.7
Smarty
※PresenterをカスタムしSmartyと連携させてます。
Smartyへの連携方法は以下の記事の通りです。(そのうちソース上げて綺麗にします・・・)
FuelPHP Smarty
概要
PhpUnitでテストコードを記述した際にViewに設定した値が取得できませんでした。ソースを追った結果renderが呼び出されていなかったのが落ちでした。
- ControllerでPresenterへ値を受け渡し(ValidateエラーをPresenterに渡す)
- PresenterのBeforeで値を設定(Validateで発生したエラー内容を受け取り表示する)
こんどrenderの呼ばれるタイミング調べよう。(てか昔調べたけど忘れてる・・・)
対応方法
値をチェックする前にrenderを動かせばいいので以下のロジックをチェックする前に呼べばOK。(なんかスマートなやり方じゃないけど・・・)
$response->body->__toString();
あとがき
今回のプロジェクトで性質上、デザインの調整が長引きあとから作成され追加されることからとりあえずViewを仮にはめViewに値が設定されているかどうかを確認するために行いました。
一応あとは正しくViewをはめてくれれば問題ないはず!と思ってます。
その他
参考
fuelPHPでPHPUnitを使ったユニット・コントローラーテストをするには