用更时尚的东西替换我的$ i(0,1,2)?

时间:2013-07-22 03:37:39

标签: perl

我通常以这种方式编写Perl测试

 for my $i ( 0, 1, 2 ) {
    is_deeply( $fetch_public_topic_ids->[$i],
 $expected_sorted_topic_list->[$i], 'Match' );

$expected_sorted_topic是我的测试用例数据的数组引用时。我有时得到反馈,我应该避免在我的“for”中写0,1,2,3 ......或0 ... 5,因为它被认为是“糟糕的风格”?

但我有什么替代方案呢?

3 个答案:

答案 0 :(得分:5)

您希望迭代数组的索引,但在确定索引时没有数组数字。问题是索引的硬编码。

for my $i (0..$#$fetch_public_topic_ids) {
   ...
}

答案 1 :(得分:5)

为什么你甚至使用循环?

你应该能够做到

is_deeply( $fetch_public_topic_ids, $expected_sorted_topic_list );

答案 2 :(得分:1)

将测试放在一个哈希数组中:

my @tests = (
    {
        fetch_public_topic_ids     => [ "whatever" ],
        expected_sorted_topic_list => [ "whatever" ],
        test_name                  => "Match",
    },
    # repeat as needed
);

for my $test ( @tests ){
    is_deeply( $test->{ fetch_public_topic_ids     },
               $test->{ expected_sorted_topic_list },
               $test->{ test_name                  },
           );
}