symfonyでのユニットテスト

http://cgi39.plala.or.jp/klove/w/k.cgi?page=Diary%2F2007%2D10%2D23

viewとcontrollerだけの為にsymfonyを使っていて、service, logic, daoといったモデル層以下は出来るだけsymfonyに依存しないようにしたいなーと思いつつ(propelは使わず、daoはS2Dao.PHP5を使用する)、アプリケーションの設定は使いたいことがあるので、serviceとかでsfConfig::get('foo')とかやってしまうと、sfConfigに依存してしまう。

それも気持ちが悪いので、sfConfigからgetAllして独自の設定クラスにコピーし、そっちを呼び出すことにすることで、直接sfConfigに依存するのを避けてるんですが、それもなんか無駄だなと思ったり。

テストするときも、設定の扱いに関して悩んでるというか、現状は常にbootstrap/unit.phpじゃなくてbootstrap/functional.phpをrequireして、アプリケーションの設定も有効になった状態でテストしてるのだけど、設定に依存しないようにした方が良いのだろうな。

あと、bootstrap/functional.phpだとlimeをrequireしてないので、何も考えずにいつも素のSimpleTestだけ使ってた。普通にrequire_once($sf_symfony_lib_dir.'/vendor/lime/lime.php');しといたら良かった。

テストと言えば、機能テストでsfBrowserが死ぬほど便利なのだが、複数のリクエストを跨ぐとS2Daoで管理してるトランザクションロールバック出来ないので(serviceにトランザクションを仕掛けてる)、テストでデータベースに追加された変更を取り消すのが面倒。変更を取り消さなくても繰り返しテスト可能な様にテストを作るようにしてますが・・・。こういうのって通常どうするもんなんだろうか。