読者です 読者をやめる 読者になる 読者になる

愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

最近のtest(まだまだ青い)

例えば、testしたいメソッドにif elsif elseという条件分岐があるとして、素直に書くとこうなりがちなので

subtest "test for hogehoge" => sub {
    my $input1 = +{ ... };
    my $output1 = $logic->do_hogehoge($input1);
    is($output1 ... );

    my $input2 = +{ ... };
    my $output2 = $logic->do_hogehoge($input2);
    is($output2 ... );

    my $input3 = +{ ... };
    my $output3 = $logic->do_hogehoge($input3);
    is($output3 ... );
};


こう書くようになった。

subtest "test for hogehoge" => sub {
    subtest "success" => sub {
        my $input = +{ ... };
        my $output = $logic->do_hogehoge($input);
        is($output ... );
    };

    subtest "fail1" => sub {
        my $input = +{ ... };
        my $output = $logic->do_hogehoge($input);
        is($output ... );
    };

    subtest "fail2" => sub {
        my $input = +{ ... };
        my $output = $logic->do_hogehoge($input);
        is($output ... );
    };
};


スコープのお陰で変数名とか気にしなくてよくなる。

こういうのを推し進めていくといわゆるBDDなシンタックスになるのかもしれない