CakePHPでテストコードをつける
TOP > てきとうにこらむ > ゲーム作りとプログラミング日記 > CakePHPでテストコードをつける
テストを書こう
テストコードを書こう。恥ずかしながら、あまり書いていなかったので。
参考情報
http://book.cakephp.org/2.0/ja/appendices/phpunit-migration-hints.html
インストール
$ sudo pear install phpunit.de/PHPUnit
ハマった箇所
- 型に厳格になってた。
- var_dumpやdebug()を使いたいときは、&debug=1をURLにくっつける
- Helperのテストで、Helperからモデルを呼び出している時
型に厳格になっていた
array(
'id' => 1
);
データベースからの値をテストしている最中、これをassertEqualsで比較すると、型が数値型と文字列型で違うとエラーが出た。比較側を文字列にして修正。
var_dumpやdebug()を使いたいときは、&debug=1をURLにくっつける
var_dump($result);
テストが通らず、値をデバッグしようと思ったのに、var_dumpで表示されない。この場合は、URLの後ろに&debug=1をつければいい。
Helperのテストで、Helperからモデルを呼び出している時
// Hogeというモデルを呼び出す
$model = ClassRegistry::init('Hoge');
モデルをヘルパーから呼び出すというケースで、少々の修正があった。
App::uses('Hoge', 'Model');
テストの冒頭にこれを記述する。
public $fixtures = array('app.hoge');
また、フィクスチャを使っている時には、モデルと同じく$fixturesに入れればいいらしい。1.3系の時と変わっていない。
テストケースでヘルパーを呼び出すときにはちょっと変更が必要。
function startTest() {
$Controller = new Controller();
$View = new View($Controller());
$this->HogeHelper = new HogeHelper($View);
}
HogeHelperを呼び出す際には、こんなかんじになると思う。
ファイルパスの変更
.
├── Behavior
├── Compornent
├── Controller
├── Helper
└── Model
1.3系では小文字複数形だったのが、1文字目大文字単数形になっている。ただし、別に1.3系でもテストは出来るようだが、bakeではこの形になるので揃えたほうがいいとは思う。
bakeのしかた
$ ./Console/cake bake
あとはウィザードに従って作成。フィクスチャも作れた。
テストコードを書かないと
CakePHP2系ではテストが書きやすくなっていると感じた。いろいろ躓いたけど、ドキュメントはしっかりしているので運用できると思う。