コードカバレッジ(3)

myapp_test.pl を使ったテストでは、パラメータを GET で(コマンドライン引数で)渡すことしかできません。セッションや POST を使いたい場合は(普通にブラウザからテストしたい場合は)、myapp_server.pl を使う必要があります。

$ perl -MDevel::Cover myapp_server.pl

しかし、上記の方法ではコードカバレッジを取得できませんでした。どうも Ctrl + C 以外の方法でサーバーを止める必要があるようです。Catalyst::Engine::HTTP を読んでいたら、いい方法があったので、紹介します。

$ perl -MDevel::Cover myapp_server.pl -r

上記のように「-r」をつけてサーバーを起動し、ブラウザで一連の操作を行った後、MyApp/lib/MyApp.pm 辺りを1文字修正して保存します。すると、ファイルの変更を検知して、サーバーが再起動します。このとき、一回プロセスが終了してくれるので、無事コードカバレッジを取得することができます。

これと Test::WWW::Mechanize を組み合わせれば、コードカバレッジを取りつつ、自動テストもできて、一石二鳥な感じがします。