CakePHP モデルを使わないコンポーネントの単体テスト手順
CakePHP 1.3.2でコンポーネントを単体テストする場合、モデルの有無によって大幅に面倒くささが変わってきます。なぜならコンポーネントはモデルを直接操作できず、モデルを操作するためのコントローラを経由する必要があるからです。
公式マニュアルにある方法はモデルを使うケースのみで、しかもわかりづらいです (どのファイルのどのブロックに書いてるのかわからない)。今回はモデル無しのコンポーネントのテスト方法をメモしておきます。
やり方
以下のコンポーネント、「HigeComponent」をテストする場合を考えます。
// app/controllers/components/hige.php
<?php
class HigeComponent extends Object {
function moja() {
return "mojamoja";
}
}
?>
テストケースは下記の通り、コンポーネントを読み込んで直接実行するだけです。
// app/tests/cases/components/hige.test.php
<?php
App::import("Component", "Hige");
class HigeComponentTestCase extends CakeTestCase {
function setUp() {
$this->component = new HigeComponent();
}
// テストケース
function testMoja() {
$result = $this->component->moja();
$expected = "moja";
$this->assertEqual($result, $expected);
}
}
?>
あとは、下記の通りコマンドを打ち込めばOK。(cake.batにパスを通さずやってます)
cd c:\xampp\htdocs\cakephp\app
../cake/console/cake testsuite app case components/hige
出力結果
Welcome to CakePHP v1.3.2 Console
---------------------------------------------------------------
App : app
Path: c:\xampp\htdocs\cakephp\app
---------------------------------------------------------------
CakePHP Test Shell
---------------------------------------------------------------
Running app case components/hige
1/1 test cases complete: 1 passes.
Time taken by tests (in seconds): 0.016170024871826
Peak memory use: (in bytes): 11,534,288
参考
- コンポーネントのテスト :: テスト(Testing) :: CakePHPによる作業の定石 :: マニュアル :: 1.3コレクション :: The Cookbook
- コンポーネントの設定 :: コンポーネント :: CakePHPによる開発 :: マニュアル :: 1.3コレクション :: The Cookbook
- @TheKeyboard » Blog Archive » Testing Components In CakePHP
assertionは下記を参考に。