ユニットテスト(1.x系)
ユニットテストは外部のライブラリとしてsimpletestを使用することで行えるよう、
準備されています。また、CakePHP自体のテストもこのライブラリを使用しています。
1.2.x系も1.3.x系もsimpletestはversion 1.0.1を使用してください。(1.1系だとうまく動きません)
1.2.x系はModelやControllerをbakeする時にテストのひな形を作成できますが、単独でbakeすることはできません。
1.3.x系はModelやControllerをbakeする時に作成できますし、テストのひな形とfixtureを単独でbakeすることもできます。
以下は1.3.x系で単独でbakeする場合の注意点が主な内容です。(動作はv1.3.7で確認)
Model
まず、Modelのテスト用のfixtureを作成します。これは他のテストでも使用します。
bake時、Modelに独自メソッドがある場合はテストfunction(先頭がtestのキャメル記法のメソッド)が作成されます
(プライベートメソッド(function名が_(アンダーバー)で始まるメソッド)はテストfunctionが作成されません)。
テストクラスに$fixturesメンバーを定義します。この時、使用プロジエクト.モデル名をアンダーバー記法で記述します。
例:'app.user_comment' プロジェクトのUserCommentモデル
'core.post' cakeコアのPostモデル
Controller
使用するModelのfixtureを用意した上でControllerのテストのひな形を作成します。
Controllerの$usesに定義してあるModelのfixtureがテストクラスのメンバ変数($fixtures)に定義されます。
この時、コントローラの$usesにプラグインのModel('Foo.Boo'のような記述)を含めていると、
bakeが落ちます(該当ファイルが空で作成されます)。
bake時、Controllerにactionがある場合はテストfunctionが作成されます(プライベートメソッドはテストfunctionが作成されません)。
Component、Behavior、Helper
Component、Behavior、Helperはbake時に独自メソッドがある場合でもテストfunctionが作成されません。
datasources、shells
未検証(bakeでプロジエクトを作成するとdatasourcesとshellsもフォルダが作られます)
Plugins
pluginsフォルダ内のプラグインのフォルダ内にtestsを作成できます。
appと同じ階層にあるプラグインはappのテストページに「Plugins」にプラグインごとに表示され、テストできます。
(テストページは以下のような感じになります)
- App
- Test Groups
- Test Cases
- Plugins
- Foo
- Test Groups
- Test Cases
- Foo
- Core
- Test Groups
- Test Cases