在 Test::More 中否定 is_deeply() 函数

Negated is_deeply() function in Test::More

Test::More 有 is_deeply() 并在 documentation 中提到应该使用它而不是 eq_array()eq_hash() 因为它有更好的诊断,并且它指出 ...它们可能会在未来的版本中被弃用

现在我正在用eq_...()函数代替is_deeply()但是我运行遇到了问题,没有is_not_deeply()或者这样的函数,我进行这样的测试:

ok (!eq_hash(\%h1, \%h2));

有没有我可以用来测试深度 不等式 的惯用替代方法,最好使用 Test::More?

不像eq_hash(),只是returns真假,需要包裹在ok()中,is_deeply()本身就是一个测试。因此,如果您将其包装在如下所示的“ok()”中:

ok(!is_deeply(\%h1, \%h2));

现在有两个测试,is_deeply() 未通过,ok() 会通过!

Test::More 似乎无法使用此功能。那么我建议改用 Test2

use strict;
use warnings;
use Test2::V0;

my %h1 = (a => [1,2,3], b=>"x");
my %h2 = (a => [1,2,3], b=>"x");

isnt (\%h1, \%h2, "Hashes are not equal" );
done_testing;