frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

ユーティリティとテスト模索。

さ、寒い。

手が悴むから手袋してキーを打ってます。

やっとこさ、風邪が落ち着いてきた…ような気がする。

でも、まだ鼻声だし、咳も出るし、頭痛もするし、熱もある。

・・・って、まだ風邪じゃん orz

なにはともあれ連日ちょこまか perl

基本的な事を復習する日々なのでメモメモ。

・Utilクラスの作り方

 めんどくさがり屋なので、何はなくとも親クラスから作る私。

 って訳で、まずは Util.pm を作る。

package Util;

use Exporter;

@ISA = qw(Exporter);

our (@ISA, @EXPORT_OK);

1;

これを継承して、例えば文字列操作のユーティリティクラス StringUtil.pm を作る。

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 も別クラス作って入れようかと思ったけど

まだ全てのテストで使いそうなメソッドにはなってないから見送り。