書き捨てだけど、テストを書く場合

表に出せない感じの書き捨てスクリプトとか、
ちょいちょいちょいっと書いて、結果を見て終わりなんだけど、
やっぱテスト書きたいよね、っていうお話。

CPAN形式にしちゃってローカルリポジトリで管理してもいんだけど、
やっぱ大げさだし、こんな感じで配置してみた。

.
├── aaa.pl
├── lib
│   └── Foo
│       └── Bar.pm
└── t
    └── 00_Bar.t

“aaa.pl”はこんな感じ。

use strict;
use warnings;
use v5.10;

use FindBin;
use lib "$FindBin::Bin/lib";

use Foo::Bar qw/hoge/;

say hoge();

でもって、こういうのが2つ3つくらいできる予定。
いっそ、”bin”フォルダでも作った方が良い気もする。

“lib/Foo/Bar.pm”はこんな感じ。

package Foo::Bar;
use strict;
use warnings;

use base qw/Exporter/;
our @EXPORT_OK = qw/hoge/;

sub hoge {
    return 'hoge';
}

1;

そして、”t/00_Bar.t”はこんな感じ。

use strict;
use warnings;

use Test::More;

BEGIN { use_ok( 'Foo::Bar', qw/hoge/ ); }

ok( hoge() eq 'hoge', 'hoge.' );

done_testing();

“00_Bar.t”ってファイル名はどうよ?って思ったけど、
そこは適宜対応で。

ちなみに、テストはこんな感じ実行する。

$ prove -Ilib -v t
t/00_Bar.t ..
ok 1 - use Foo::Bar;
ok 2 - hoge.
1..2
ok
All tests successful.
Files=1, Tests=2, 0 wallclock secs ( 0.04 usr 0.00 sys + 0.03 cusr 0.00 csys = 0.07 CPU)
Result: PASS

-vを付けないで実行した場合はこんな感じ。

$ prove -Ilib t
t/00_Bar.t .. ok
All tests successful.
Files=1, Tests=2, 0 wallclock secs ( 0.04 usr 0.00 sys + 0.03 cusr 0.00 csys = 0.07 CPU)
Result: PASS

何が言いたかったというと、

Test::Moreuse_okの引数は、
モジュール名の他に、インポートする関数も指定できる。

おしまい。

Leave a Comment