Test::Moreをテスト フレームワークとして使用し、インライン データを埋め込むことを組み合わせて使用することをお勧めします。
Test::More
Perl の標準テスト ツールキットです。あなたが見つけるかもしれないほぼすべてのテストツールがそれを使用しています。多くの便利な組み込みテスト機能が付属しています。
一般に、サブルーチンまたはツールが実際に与えた値と期待値を比較することによって、テストを行います。これを行う最も一般的な方法は、is
ルーチンを使用して直接比較することです。フォーマットは次のようになります。
is($got, $expected, $test_name);
たとえば、POW 関数を作成し、それが機能していることを確認したいとしましょう。
sub pow { my ($n, $p) = @_; return $n ** $p; }
これを次の方法で確認します。
is( pow(2, 3), 8, "2^3 is 8" );
is( pow(2, 4), 16, "2^4 is 16" );
is( pow(3, 3), 27, "3^3 is 27" );
あとは、必要なデータを便利な形式で取得するだけです。Heredocs を使用して、テスト関数呼び出しで小さなデータをインラインで読み込むことができます。
my $test1 = <<'END_DATA1';
... (your data here
END_DATA1
my $test2 = <<'END_DATA2';
... (your second dataset here
END_DATA2
__DATA__
または、1 つの大きなデータ セットの複数の部分をチェックする必要がある場合は、すべてをブロックに入れることを検討してください。
while (my $line = <DATA>) { ... } # read from the DATA handle
# ... your script above here; everything below __DATA__ is read from the handle
__DATA__
... ( your data set here )
たとえば、サブルーチンが行を正しく読み取るようにしたい場合は、次のようになります。
use strict;
use warnings;
use Test::More;
use Your::Lib; # load your library with your routines in it
use Test::More tests => 5; # how many checks you will perform, in case it dies
my $lib = your_lib_function(\*DATA); # say, it loads from a file handle maybe?
is( $lib->key1(), 'value', "Key 1 was read correctly.");
is( $lib->key2(), 'value2', "Key 2 was read correctly.");
is( $lib->key3(), 'value3', "Key 3 was read correctly.");
is( $lib->key4(), 'value4', "Key 4 was read correctly.");
is( $lib->key5(), 'value5', "Key 5 was read correctly.");
__DATA__
{
"Key" : "value",
"Key2" : "value2",
"Key3" : "value3",
"Key4" : "value4",
"Key5" : "value5",
}
Test::More
このフレームワークの仕組みの詳細については、 を参照してください。幸運を!:)