2013年6月22日
勝手に続:DBIx::Tracerを使って流れているSQLのテストをしてみた話
http://shibayu36.hatenablog.com/entry/2013/01/22/080049
このへん見て、もっと汎用的に手軽に使える感じにしたいなーとか常々思ってたので以下の様なユーティリティーをプロジェクトのt::Utilに追加した。
sub trace_sqls(&) {
my $code = shift;
my @sqls;
require DBIx::Tracer;
my $tracer = DBIx::Tracer->new(sub {
my %args = @_;
push @sqls, $args{sql};
});
$code->();
@sqls;
}
以下のように使う。
my @sqls = trace_sqls {
$dbh->do('UPDATE ...');
...
};
@sqlsに流れたSQLが入ってきます。便利。
みたいなことを社内IRCで発言したら、soh335先生に「あーDBIx::QueryLog版だけど同じようなの半年前に作ってたわー」って言われて涙目であった。
なんか最近やっとテストを楽に書く方法とかそういうのを色々考えられるようになってきて、テスト番長であるsoh335先生の背中が見えてきた感じがする。