Testをはじめてみた3
「Testをはじめてみた1 - Perl日記」
「Testをはじめてみた2 - Perl日記」の続き。
- 「なったふり」オブジェクト(モック)を使ってTest
- Test::MockObject
- mock...模造品、まがい物。
- システムの一部のテストなんだけど、システムの他の部分を通るところもあって、でもそこはちゃんと動いてるって分かってる時。
- ちょっとのテストのためにDB接続なんてコストが高いんだよお、という時。
- →モックオブジェクトでテスト
- set_true($method_name)
- set_false($method_name)
- mock($method_name => $code_ref)
#!/usr/bin/perl # TestMore6.pl use Test::More 'no_plan'; use Test::MockObject; #my $color = Class::MyColor->new; my $color = Test::MockObject->new; my @true_methods = qw/set_color get_color mix/; for my $method_name (@true_methods) { $color->set_true($method_name); } $color->set_false('clear_color'); ok($color->set_color('red'), 'Set red Color'); ok($color->get_color, 'Get Color'); ok($color->mix('red', 'blue'), 'Mix Color Red and Blue'); ok(!$color->clear_color, 'Clear Color'); $color->mock( ratio => sub { my %ratio = ( gray => { black => 0.5 }, aqua => { blue => 0.45 } ); my ($self, $base) = @_; return $ratio{$base} if $ratio{$base}; return; }, ); cmp_ok($color->ratio('gray')->{'black'}, '==', 0.5, 'Gray is Black * 0.5'); cmp_ok($color->ratio('aqua')->{'blue'}, '==', 0.45, 'Aqua is Blue * 0.45');
% perl TestMore6.pl ok 1 - Set red Color ok 2 - Get Color ok 3 - Mix Color Red and Blue ok 4 - Clear Color ok 5 - Gray is Black * 0.5 ok 6 - Aqua is Blue * 0.45 1..6
- PODのテスト
- Test::Pod
- 強制の意味は弱い
- →eval "use Test::Pod 1.00";
- Test::Pod::Coverage
- 全サブルーチン、メソッドについての説明があるかチェック
- Test::Pod