我正在测试一个返回数组的函数。该数组可能因环境而异,但它始终具有至少一个常量值(我要测试的那个)。
当我使用 Perl 5.12 时,我可以使用 smartmatch 运算符来查找元素是否在数组中:
ok($known_value ~~ @returned, 'testing method abc')
is
但我喜欢“发现”和like
“预期”部分的增强输出。所以我尝试了这个:
cmp_ok($known_value, '~~', @returned, 'testing method abc')
这不起作用,因为似乎cmp_ok
在比较的两个部分都需要一个标量:
not ok 1 - testing method abc
# Failed test 'testing method abc'
# at abc.t line 53.
# 'stable_value'
# ~~
# '2'
“预期”槽中的数组在标量上下文中计算并转换为 2。
我可以通过 hack 使用和字符串化数组来解决这个问题like
,但是有一个测试可以使用 smartmatch 运算符作为比较方法(如when
)会很好。有没有办法用 Test::More 或其他模块来做到这一点?
目前我正在使用:
ok($known_value ~~ @returned, 'testing method abc')
or diag (
"ERROR:\n".
"Found: ". Dumper @returned."\n".
"Expected at least one element equal to '$known_value'"
)
这是我能做的最好的吗?