プラグインのテスト

アプリケーションについてはlimeを使ったテストの解説があるのですが、プラグインのテストはどうやってやるのでしょう?

test-unitタスクが定義されているsfPakeTest.php を調べてみると、引数としてファイルパターンを与えることはできますが、sf_test_dir/unit がパターンの基点になっています。ということは、それを遡ってsf_plugin_dir側に移れるようなパスを与えるだけで済むかもしれません。


ということで、unitテストコードを含んでいたsfPropelActAsCommentableBehaviorPluginでやってみました。

C:\xampp\htdocs\dev\idm>symfony test-unit ../../plugins/sfPropelActAsCommentable
BehaviorPlugin/test/unit/*

Warning: require_once(C:\xampp\htdocs\dev\idm\apps\frontend\config\config.php):
failed to open stream: No such file or directory in C:\xampp\htdocs\dev\idm\test
\bootstrap\functional.php on line 26

Fatal error: require_once(): Failed opening required 'C:\xampp\htdocs\dev\idm\ap
ps\frontend\config\config.php' (include_path='C:\xampp\htdocs\dev\idm\lib;C:\xam
pp\htdocs\dev\idm\apps\\lib;;C:\xampp\php\pear/symfony\vendor;.;C:\xampp\php\pea
r;C:\xampp\php\pear\') in C:\xampp\htdocs\dev\idm\test\bootstrap\functional.php
on line 26
symfony test-unit ../plugins/sfPropelActAsCommentableBehaviorPlugin/test/unit

どうやら、frontendというアプリケーション名を前提にしているようです。

C:\xampp\htdocs\dev\idm>symfony init-app frontend

を実行してから、再度実行しました。

C:\xampp\htdocs\dev\idm>symfony test-unit ../../plugins/sfPropelActAsCommentable
BehaviorPlugin/test/unit/*


  [Exception]
  Unknow class "sfTestObject"

今度は、sfTestObjectクラスがない、と文句を言われてしまいました。


sfPropelActAsCommentableBehaviorTest.phpを読んでみると
アプリケーション名としてfrontendを前提にしているのもsfTestObjectクラスを要求して例外を出力しているのも、テストコードの中でやっています。


どうやら、テストケース自体の実行の仕方としては、これでよいようです。functionalテストの方は実験していませんが、おそらく同じようなものだと思います。