我在Test::More
寻找像is_deeply
这样的测试程序。 。 有来自Test::Deep
cmp_bag
但这只在阵列本身上运行,而不是可怕的大哈希的阵列-的哈希值的数据结构,我传递有什么样:is_deeply测试忽略数组顺序?
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 2012-03-02 10:56:56