ふわっとしたタイトル通り、中身はありません。
use strict; use warnings; use Test::More; subtest "A" => sub { # DBを扱ったテスト }; subtest "B" => sub { # DBを扱ったテスト }; done_testing;
こういう感じで書いちゃうと、subtest "B"のテストコードが、subtest "A"に依存するとかよくしちゃう。
そういう事をするとsubtest "A"がいらなくなったから削除するとsubtest "B"がエラー吐くみたいなのが、とてもつらい。
「こういう事起きないように気をつけよう!」みたいなの、ずっと1人だったらそれでいいんだけど、チームで開発してるといつの間にか気をつけよう!は忘れ去られてる事が多い。
だから以下のようにapptestみたいな名前のやつをt::Utilに作って、その中でしかデータが保持されないように最近してます。
use t::Util; apptest "A" => sub { # DBを扱ったテスト }; apptest "B" => sub { # DBを扱ったテスト # apptest "A"で作ったデータは、ここではアクセスできない };
もっといい方法があるよって場合はぜひぜひ教えてください…!
実際に現場で使われているPerlでのウェッブアプリケーションのテストの話は、
soh335 さんが 2013/9/20 15:20〜 YAPC::Asia 2013 で話すようなので、聞きに行くととても捗るハズです。
http://yapcasia.org/2013/talk/show/f43580be-ce70-11e2-9e79-f0896aeab6a4