is_deeply
のようなテストルーチンをTest::More
に探しています。 ありTest::Deep
からcmp_bag
だが、これが唯一の配列そのものではなく、私が渡している恐ろしく大きなハッシュ・オブ・アレー・オブ・ハッシュデータ構造に作用するようなものがあります:。is_deeply array orderを無視してテストしますか?
is_deeply $got, $expected, {
array => cmp_bag,
# and other configuration...
}, "Ugly data structure should be the same, barring array order.";
明確化は、
私は再帰的に私の$expected
と$got
オブジェクトを掘り下げ、バッグオブジェクトに配列を変換することができます:
sub bagIt {
my $obj = shift;
switch (ref($obj)) {
case "ARRAY" {
return bag([
map { $_ = bagIt($_) }
@$obj
]);
} case "HASH" {
return {
map { $_ => bagIt($obj->{$_}) }
keys %$obj
};
} else {
return $obj;
}
}
}
is_deeply
の亜種に私のためにこれを伝える方法があるのだろうかと思います。
[Data :: Rmap](http://search.cpan.org/~bowmanbs/Data-Rmap-0.62/lib/Data/Rmap.pm)を使用してbagItを書き直すことはできますが、余分な依存関係は価値があるとは思えませんコードのいくつかの余分な行...私はそれが答えにあった場合bagItに投票するだろう。 – Dallaylaen