ユーティリティとテスト模索。
さ、寒い。
手が悴むから手袋してキーを打ってます。
やっとこさ、風邪が落ち着いてきた…ような気がする。
でも、まだ鼻声だし、咳も出るし、頭痛もするし、熱もある。
・・・って、まだ風邪じゃん orz
なにはともあれ連日ちょこまか perl で
基本的な事を復習する日々なのでメモメモ。
・Utilクラスの作り方
めんどくさがり屋なので、何はなくとも親クラスから作る私。
って訳で、まずは Util.pm を作る。
package Util;これを継承して、例えば文字列操作のユーティリティクラス StringUtil.pm を作る。use Exporter;
@ISA = qw(Exporter);
our (@ISA, @EXPORT_OK);
1;
で、これを呼び出す側は、こんな感じ。package Util::StringUtil;
use base qw(Util);
@EXPORT_OK = qw(umlautToAlphabet);
sub umlautToAlphabet {
my $string = shift;
$string =~ s/\xe4/ae/g;
return $string;
}
1;
#!/usr/bin/perl -w
use strict;
use Util::StringUtil qw(umlautToAlphabet);
my $string = 'äaaa';
$string = ¨autToAlphabet($string);
exit;
・Test::Base 用のテストを用意する
テストは、めっさシナリオ用意せなアカンだろーから、これまた面倒。
なんとか楽出来ないかなぁ…と、模索中なので、メモ。
・Person.pm(アクセサだけテストしたいクラス)
package Person;use strict;
use base qw(Class::Accessor::Lvalue::Fast);
__PACKAGE__->mk_accessors(qw(name age));
1;
・t/01-methods.t
use Test::Base;use File::Basename;
use Person;
sub testMethod {
my $value = shift;
my $objPerson = Person->new;
$objPerson->$value = $value;
return $objPerson->$value;
}
filters { input => 'testMethod' };
my $specFileName = $0.'b';
spec_file($specFileName);
run_compare;
・t/01-methods.tb
=== name--- input: name
--- expected: name
=== age
--- input: age
--- expected: age
で、テストする時は「prove -l t/01-methods.t」で。
testMethod も別クラス作って入れようかと思ったけど
まだ全てのテストで使いそうなメソッドにはなってないから見送り。