しばらく読んでいなかった『PerlTesting』再開。 2章の最後に出てくるwan/die/exceptionのテスト。 Test::Warn warnで出力されるメッセージをテスト。文字列系テストなのでTest::Moreのisとかlikeと同じようなものがTest::Warnにはあります。 #!/usr/bin/perl use strict; use warnings; use Test::More tests => 8; use Test::Warn; sub add_positives { my ($l, $r) = @_; warn "first argument ($l) was negative" if $l < 0; warn "second argument ($r) was negative" if $r < 0; return $l + $r; } warning
Test::MoreでテストをTODO扱いにすることが出来ます。どういうことかというと、 test自体は普通に行う。 失敗してもそれはTODO扱いとして、トータルの結果では成功したことにする。 という感じ。 いくつかの機能が未実装の(というかほとんどなにもしてない)シャーペンモジュール(正しくはmechanical pencil、でも長いから嫌)があるとします。 package Pencil; use strict; use warnings; sub new { my $class = shift; return bless {}, $class; } sub leads { # TODO } sub supply_leads { # TODO } 1; #!/usr/bin/perl use strict; use warnings; use Test::More tests => 3
数日間が空いたけど、PerlTesting再開。 条件に合わせてテストをスキップしたい場合があったりします。たとえば、 依存モジュールがインストールされてなかったらスキップ とあるOSだったらスキップ ネットワークにつながってなかったらスキップ などなど。そういう時はskip関数を使います。 テストするモジュール。 package Phrase; use strict; use warnings; sub new { my ($class, $text) = @_; bless \$text, $class; } sub text { my $self = shift; return $$self; } sub as_dutch { my $self = shift; require WWW::Babelfish; return WWW::Babelfish->new->translate
PerlTestingのChapter1最終戦です。 ok()って基本中の基本ですがやっぱり不便です。いろんなテストがあるのに条件を1個に縮めないといけないんですもの。でも、Test::Moreにはok()の代わりに使えるイケてる関数がいくつかあります。 まずはテストコード。 #!/usr/bin/perl use strict; use warnings; use Test::More tests => 4; use_ok('Greeter') or exit; my $greeter = Greeter->new(name => 'Emily', age => 21); isa_ok($greeter, 'Greeter'); is($greeter->age(), 21, 'age() should return age for object'); like($greeter->gr
Chapter1の後半戦は、Test::More。 Perl Testing: A Developer's Notebook (Developers Notebook) Test::MoreはTest::Simpleのスーパーセットで完全に置き換えて使ってOK、モジュールをただしく読み込めたかどうかなどのテスト関数も含めいろんな機能あるでよ、とのことです。 早速。 package AnalyzeSentence; use strict; use warnings; use base qw/Exporter/; our $WORD_SEPARATOR = qr/\s+/; our @EXPORT_OK = qw($WORD_SEPARATOR count_words words); sub words { my $sentence = shift; return split $WORD_SE
IEerBug は Internet Explorer 6.0 と FireFox 1.5 で動く JavaScript 用のデバッグ コンソールです。 FireBug と同じ console.log()、console.debug() などの関数が使えるようになるため、FireFox と IE の両方でデバッグする場合に便利です。コンソールに出力したオブジェクトを、DOM インスペクタを利用して解析することも可能です。 使い方 ieerbug.zip をダウンロードし、中身をアプリケーションのディレクトリに配置します。IEerBug 用のディレクトリを作成して、その中に配置しても問題ありません。 HTML の中で次のようにして ieerbug.js を読み込みます。
CGI::Application::Plugin::Redirect CGI::Application::Plugin::Redirectが出ていますね。名前から想像する通り、redirectの処理を行ってくれるものです。 package MyApp; use base qw(CGI::Application); use CGI::Application::Plugin::Redirect; sub start { my $self = shift; return $self->redirect('http://www.example.com/'); } リダイレクトの相対→絶対への変換はサポートしていないのであまり役に立ちそうもないかなぁと思ってましたが、ところがどっこい。1つ面白い機能がありました。 cgiapp_prerunでのリダイレクト、 package MyApp; use b
CGI::Application - 再利用可能なWEBアプリケーションを構築するためのフレームワーク NAME SYNOPSIS INTRODUCTION USAGE EXAMPLE ABSTRACT DESCRIPTION Instance Script Methods Sub-classing and Override Methods Application Module Methods Testing PLUG-INS Existing plug-ins Writing Plug-ins Writing Advanced Plug-ins - Using callbacks COMMUNITY SEE ALSO AUTHOR CREDITS LICENSE Page Top NAME CGI::Application - 再利用可能なWEBアプリケーションを構築するためのフレー
ここ1ヶ月ほど(ながいなぁ…)、ちまちまと勉強してきたCGI::Application::Dispatchについて、使い方もこなれて来たので、ここいらでひとまとめです。 何するモジュール? この勉強中エントリーの1回目でも書きましたが、CGI::Applicationを利用したアプリで必要になるインスタンスCGIは作らずに、URI(PATH_INFO)から実行するモジュールとRunモードを決定する、というモジュールです。newしてrunするだけのインスタンスCGIなんか毎回書きたくないよ、というのがモジュール作者さんの意図のようです(PODにもあります)。 URIはこうなる CGI::Application::Dispatchを使った場合のURIは、 となります。 CGI::Applicationを継承したMyApp::Indexというモジュールを作った場合、それを実行するためのURIを比
PATH_INFOと相対パス(リンク) おまえのブログさんのエントリーCGI::Application::Dispatch勉強中その2で でも、CGI::Application::Dispatchを使う場合は、PATH_INFO形式を利用することが前提なうえ、URIが全部、 http://example.com/dispatch.cgi/モジュール名/Runモード な感じになります。階層が全部一緒です。こうなると、今までの「URIの階層=ファイルのありか」という方法でテンプレートを並べて、リンクURIを相対パスで書く、というのが不便になりました。URIたびたび間違うし…。 これは僕も悩みました。あとでPATHが変更になりそうなときには絶対パス・リンクは使いづらいですし、Dreamweaverでも作成しにくい。なので最近作ったCGI::Application::Dispatchを利用したアプ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く