我正在 is_deeply
中寻找像Test::More
这样的测试例程。
有来自 cmp_bag
的Test::Deep
,但是它仅在数组本身上起作用,而不是我传入的非常大的hash-of-hashhes数据结构。是否有类似以下内容的内容:
is_deeply $got, $expected, {
array => cmp_bag,
# and other configuration...
}, "Ugly data structure should be the same, barring array order.";
澄清
我可以递归地研究
$expected
和$got
对象,并将数组转换为bag对象: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
的某种变体为我做这件事。 最佳答案
好吧,从Test::Deep docs来看,cmp_bag(\@got, \@bag, $name)
只是cmp_deeply(\@got, bag(@bag), $name)
的简写。
is_deeply( $got, {
array => bag(qw/the values you expect/),
# and other expected values
}, "Ugly data structure should be the same, barring array order." );
关于perl - is_deeply测试忽略了数组顺序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9523141/