谷口です。
symfony ver1.0 later ではテストツールとして lime というツールが同梱されています。
今回はlimeでテストコードを書く際の判定用メソッドを紹介したいと思います。
また、簡単に単体テストの手順も記します。
使い方
1.sf_root_dir/test/unit/mytestTest.phpを作ります。
2.1.で作成したファイルにテスト用の環境を定義を記述します。
define('SF_APP', 'myapp');
define('SF_ENVIRONMENT', 'test');
define('SF_DEBUG', true);
3.1.で作成したファイルで単体テストのbootstrapを読み込みます。
require_once(sf_root_dir/test/bootstrap/unit.php');
4.テストモジュールのオブジェクトを生成します。
$test = new lime_test(TEST_NUM, new lime_output_color());
5.テストコードを書いていきます。
6.テストコードを書き終えたら、symfonyコマンドでテストを実行します。
> sf_root_dir/symfony test-unit mytest
テストコードで判定に用いるメソッド
lime_test::ok($condition, $message)
//$condition === true ならば true そうでなければ false
lime_test::is($value1, $value2, $message)
//$value1 === $value2 ならば true そうでなければ false
lime_test::isnt($value1, $value2, $message)
//$value1 !== $value2 ならば true そうでなければ false
lime_test::like($value, $regex, $message)
//$valueが$regexで表される正規表現に
//マッチすれば true そうでなければ false
//正規表現の形式は preg_match で使用する形式です。
lime_test::unlike($value, $regex, $message)
//$valueが$regexで表される正規表現に
//マッチしなければ true そうでなければ false
//正規表現の形式は preg_match で使用する形式です。
lime_test::cmp_ok($value1, $operator, $value2, $message)
//$value1と$value2を$operatorで比較し、
//その結果が true ならば true そうでなければ false
lime_test::can_ok($object, $methods, $message)
//$object に $methods(文字列)があれば true そうでなければ false
lime_test::isa_ok($var, $class, $message)
//$var が $class(文字列)のオブジェクトならば true そうでなければ false
lime_test::is_deeply($array_value1, $array_value2, $message)
//$array_value1と$array_value2を配列要素全体を比較し、
//すべて一致すれば true そうでなければ false
おわりに
limeはsymfonyプロジェクトの開発者が独自に作成したツールとのことです。
単体テストだとDBアクセスするのがちょっと面倒ですが、テストツールとしては便利です。(参考サイト3参照)
参考サイト:
- symfonyで開発日記 : 新しく採用されたテスティングフレームワークlimeの紹介 – lime without symfony part 1
- uthorofotus iruc symfony:テストフレームワークLimeを使った単体テスト
- symfony – 単体テストで propel を使う方法