最低代码
use strict;
use warnings;
use v5.16;
use Test::More tests => 2;
is_deeply(
[ [0, 0], [1, 0] ],
[ [0, 0], [1, 0] ],
'Intersects x-axis at (0, 0) and (1, 0)'
);
is_deeply(
( [0, 0], [1, 0] ),
( [0, 0], [1, 0] ),
'Intersects x-axis at (0, 0) and (1, 0)'
);
返回
ok 1 - Intersects x-axis at (0, 0) and (1, 0)
is_deeply() takes two or three args, you gave 5.
This usually means you passed an array or hash instead
of a reference to it at test44.pl line 14
not ok 2
# Failed test at test44.pl line 14.
# Looks like you failed 1 test of 2 run.
第一个代码以[[-,-],[-,-]]
条目成功,但第二个代码以([-,-],[-,-])
条目失败。
我的函数返回([-,-], [-,-])
的所有内容,我想测试它是否在x轴上。
测试的args太多,这就是测试失败的原因。 因此可能需要进行一些转换。 但是,我的数据块非常大,因此没有重复数据因速度而不是一个好主意。
如何继续测试此类数据([-,-],[-,-])
以有效地符合预期结果?
答案 0 :(得分:3)
使用匿名数组,每个数组都只被解释为1个参数:
is_deeply(
[ [0, 0], [1, 0] ],
[ [0, 0], [1, 0] ],
'Intersects x-axis at (0, 0) and (1, 0)'
);
原始代码中的括号不执行任何操作,列表被展平,即代码等同于
is_deeply( [0, 0], [1, 0], [0, 0], [1, 0],
'Intersects x-axis at (0, 0) and (1, 0)'
);
is_deeply
的5个参数。