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 致しました

Test-Deep-Teng-Row-0.01 - Compare Teng::Row object by get_columns method in using Test::Deep - metacpan.org