【发布时间】:2022-01-21 01:35:49
【问题描述】:
Test::More 有 is_deeply() 并在 documentation 中提到应该使用它而不是 eq_array() 或 eq_hash(),因为它具有更好的诊断功能,并且它声明 ...它们可能是在未来的版本中已弃用
现在我将 eq_...() 函数的使用替换为 is_deeply() 但我遇到了一个问题,没有 is_not_deeply() 或这样的函数,我有一个这样的测试:
ok (!eq_hash(\%h1, \%h2));
我可以使用惯用的替代方法来测试深度不等式,最好使用 Test::More?
与eq_hash()不同,它只返回true或false,需要包裹在ok()中,is_deeply()本身就是一个测试。因此,如果您将其包装在“ok()”中,如下所示:
ok(!is_deeply(\%h1, \%h2));
现在有两个测试,is_deeply() 失败,ok() 将通过!
【问题讨论】:
-
文档说它们是等价的,所以否定应该是等价的。你有什么理由不能做
ok ( !is_deeply(...))? -
因为与 eq_hash 不同,is_deeply 本身就是一个测试。因此,如果你将它包装在“ok()”中,就会有两个测试,is_deeply 失败和 ok,会通过!
-
@MichielB 您应该在问题中提及这一点。输入代码并显示它是如何不工作的以及为什么不工作。然后你可能会得到答案。这个问题很模糊。
-
@TLP 我已经澄清了我的问题来解释这一点
标签: unit-testing perl test-more