« DBIx::FixtureLoaderってのを書きました | メイン | CPANで意図しない名前空間の取得を防ぐために »

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先生の背中が見えてきた感じがする。

投稿者 Songmu : 2013年6月22日 19:21