我正在 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/

10-11 17:21