@kyanny's blog

My life. Opinions are my own.

テストに悩む

Class::DBI を継承した Data/XXXX.pm とかをテストしたい、テストをまず書きたいといつも思っているのだけど、開発環境の MySQL じゃなくてテンポラリファイルとかでテストを走らせるとき用のデータベースも用意したい→そういうモジュールを探して使ってみる (Class::DBI::Test::TempDB) →うまくいかず、で何時間も試行錯誤してうまくいかなくて、結局ほとんど CRUD ができるかどうかのテストなのでそれって要するに Class::DBI をテストしてるようなものであってここで時間使ってもな、、ってなっちゃっていつまでたっても t/*.t が増えていかない。

コントローラー側、 Pages/*.pm のほうのテストも、こちらはスタンドアロンのサーバがないので apache/modperl が動いてる開発環境じゃないとうまくいかないのだけど、 WWW::Mechanize でテストするのってなんかいい加減すぎるような気が・・・と思ってどうにも気が乗らず、けれどテストスクリプトの中で疑似リクエストを作ってどうたら、みたいなのは Sledge 付属のテストコードで読んだことがあるけどよくわからなくて自分で同じことをやってみようとするとうまくいかない。で、やっぱり t/*.t ファイルは増えていかない。

ユーティリティ関数コレクションとか、データベースやら CGI やらと無関係のテキスト処理をする部分だとかは、何をどうテストすれば良いかがはっきりしてるし環境依存の部分が少ないからテストしやすい(実際そういうふうに作ったものもある)んだけど、そうではないケースになったとき、ちゃんとテストをかいて動かせていないのが、悔しいし気持ち悪いしへこむ。ここ絶対いまテスト書かないとダメだろ、と思ってるものに対してテストが書けない。書きたいのに。情熱はあるけど技術知識がなくて出来ないからこんなにへこむし焦るし汗をかくのだろうか。