Test::More 在文档中is_deeply()
并提到应该使用它而不是eq_array()
或eq_hash()
,因为它具有更好的诊断,并且它指出......它们可能会在未来版本中被弃用
现在我正在替换eq_...()
函数的使用is_deeply()
但我遇到了一个问题,没有is_not_deeply()
或这样的函数,我有一个这样的测试:
ok (!eq_hash(%h1, %h2));
有没有一种惯用的替代方法可以用来测试深度不平等,最好使用 Test::More?
不像eq_hash()
,它只返回真或假,需要用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;