symfonyでDocTestを実現するsfDocTestの最新版(0.2.4)を本家のプラグインリポジトリにリリースしました。
以前こちらの「symfonyで開発日記」で紹介したときには0.0.1でした。その後の修正をまとめると以下のようになります。
plugins.symfony-project.orgのpearサーバからインストールできるようにした。- #81 symfony 1.2に対応した。
- #61
config/doctest.ymlにテストの設定を書けるようになった。- これに伴い、
symfony doctest-allタスクがobsolateになった。
- これに伴い、
- #62 symfony 1.0用に
doctest-coverageタスクを追加した。 sfTestBrowserを利用したファンクショナルテストができるようになった。- #72 対話端末で
limeの結果に色づけされないバグを修正 - ドキュメントの追加
- その他細かい修正。
インストール
symfony plugin:install sfDocTestPlugin
使い方
基本
基本的な使い方は従来から変わっていませんので、以前の記事をご覧ください。
ファンクションテスト
DocTestは、クラスメソッドのコメント内にテストコードを書く形から、関数単位ののIN/OUTをチェックするユニットテストに向いているように思われがちですが、symfonyの強力なファンクションテスト機能を利用することで、DocTest内からファンクションテストを実装することが可能です。
/** * #test ->executeShow() * <pre > * #browser-> * get("/")-> # homepage を取得して * isStatusCode(200)-> * checkResponseElement('h1','symfony.jpへようこそ')-> * click("プラグイン")-> * isStatusCode(200)-> * checkResponseElement('h1','日本向けプラグイン')-> * test(); # ダミー * </code > */ public function executeShow(){ ...
結果は以下のようになります。
カバレッジの測定
doctest-coverageタスクを利用すると、xdebugの機能を利用して、テストがどれほど行き届いているかのチェックを行うことができます。
結果は以下のようになります。
その他一般的なドキュメントについては、tracをご覧ください。
初版から約一年sfDocTestPluginを使ってきましたがやはりテスト対象の直上で(ファイルを切り替えずに)テストが気軽に書ける環境はとても快適です。私自身に便利に使っていますので、今後も開発を続けていきたいと思います。
今回は、かなり強引な方法でsymfony 1.0系と1.2系のプラグインを同居させてみました。上手く行くか不安でしたら何とか動いているようです。
また不具合がありましたら、ご一報いただけると幸いです。

