CakePHPでModelのテストが失敗する時の対応
Composer + CakePHP2 + Composerでinstallしたphpunit という構成でModelのテストが上手くいかなかったのでメモ。 PHPUnitを実行する準備は、下記リンクの内容を参考にしました。 ComposerでインストールしたPHPUnitをCakePHP2のコンソールから利用する方法 ModelクラスにはgetHogeというpublicメソッドを作成し、そのgetHogeメソッドのテストをcake bake testで作成したUserTestに追加しました。
app/Model/User.php
1 | ### Test/Case/Model/UserTest.php |
実行してみると、下記の用にsqlエラーが発生して、そもそもテストが実行出来ない。
1 | Welcome to CakePHP v2.4.1 Console |
色々と調査してみたところ、User.phpがそもそもロード出来ていないのが原因の模様。 ロード出来ていないので、マジックメソッドが呼ばれるが、SQLにはgetHogeなんていう命令は無いからエラーになっていると想像。 ひとまずの応急処置として、APP::usesの箇所を下記のように書き換えれば、動きます。
1 | //App::uses('User', 'Model'); |
とりあえず動くけど、もっとカッコイイ方法があるな・・・絶対に(-_-;) 今度、CakePHPのコードを読んでみよ。 2014-1-12 追記 もっとカッコイイ解決法 =>解決編