Test::Fixture::DBIC::Schema
DB周りのロジックテストをしたくて導入してみたのですが、リレーションがらみでcreate_relatedメソッドなんかを使ってると、create時にコケてしまうので、
--- Schema.pm 2008-05-10 14:39:59.000000000 +0900 +++ Schema.pm.new 2009-02-27 16:28:24.000000000 +0900 @@ -71,8 +71,7 @@ my $result = {}; for my $row ( @{ $fixture } ) { - $schema->resultset( $row->{schema} )->create( $row->{data} ); - $result->{ $row->{name} } = $schema->resultset( $row->{schema} )->find( $row->{data} ); + $result->{ $row->{name} } = $schema->resultset( $row->{schema} )->update_or_create( $row->{data} ); } return $result; }
こういう方がいいかな、と思いました。あと、挿入メソッドの返り値を利用してSQLの発行を半分に抑えれば、パフォーマンスも少し上がるのではないかと。
にしても、テスト用ダミーデータの作成はホントに疲れる…。
(追記)
ふと思ってDBIx::MoCo::Fixtureも見てみたら、予想通り同じ問題を抱えてる…
データを入れる仕組みが違うので、同じ問題は起こりえません。