Test::Deep::Teng::Row
最近 Teng 使ってるんですが、Teng を使ってるところのテストを書くときに、テストされる側が Teng::Row を取得した時の sql と test で期待するために取得した時の sql が違うと is_deeply しても駄目で、わざわざ
is_deeply $got->refetch, $expected->refetch;
とか ->get_columns とかしてたのですが、もう少し複雑な構造に Teng::Row が入ってるとだるくてあれだったので
soh335/Test-Deep-Teng-Row · GitHub
というのを作って
cmp_deeply \@got_rows, +[ map { teng_row($_) } @expected_rows ];
と書けばよしなに refetch しなおしてテストするようにしました。
ちなみに Test::Deep の bag は配列に入っていれば順序は関係ないというやつでこれを使えば
cmp_deeply \@got_rows, bag( map { teng_row($_) } @expected_rows );
みたいに書けて @got_rows の中の順序は気にしないという感じでテストが書けて良い感じです。
あまり周りに teng を使ってる人がおらずテストをどう書いてるかつかめないので他に方法があるとか知りたいところではあります。
だいたい、motemen/Test-Deep-JSON · GitHub 真似た感じになっております
相変わらず、ビールが美味い。
追記
get_columns のほうが良さそうだったのでそうしていますぐ使いたかったので shipit 致しました