Pab*_*cia 1 testing perl smartmatch
我正在测试一个返回数组的函数.根据环境,数组可能会有所不同,但它总是至少有一个常量值(我要测试的值).
当我使用Perl 5.12时,我可以使用smartmatch运算符来查找元素是否在数组中:
ok($known_value ~~ @returned, 'testing method abc')
Run Code Online (Sandbox Code Playgroud)
但我喜欢的增强的输出is
,并like
与"发现"和"预期"的部分.所以我尝试了这个:
cmp_ok($known_value, '~~', @returned, 'testing method abc')
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为它似乎cmp_ok
在比较的两个部分中都需要标量:
not ok 1 - testing method abc
# Failed test 'testing method abc'
# at abc.t line 53.
# 'stable_value'
# ~~
# '2'
Run Code Online (Sandbox Code Playgroud)
"预期"槽中的数组在标量上下文中计算并转换为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'"
)
Run Code Online (Sandbox Code Playgroud)
这是我能做的最好的吗?
@returned
由于Perl如何将参数传递给子例程,因此无法使用.(数组被压平到参数列表中并失去其身份.)传递数组引用:
cmp_ok($known_value, '~~', \@returned, 'testing method abc')
Run Code Online (Sandbox Code Playgroud)
智能匹配运营商足够聪明,可以做正确的事情.来自perlsyn:
请注意,智能匹配隐式取消引用任何非祝福的散列或数组引用,因此"哈希"和"数组"条目适用于这些情况.
归档时间: |
|
查看次数: |
470 次 |
最近记录: |