SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Webアプリケーションフレームワーク「Catalyst」入門

初めてのCatalyst入門(10)
Apache::Testを使用したテスト

mod_perl経由でCatalystアプリケーションをテストする方法

  • X ポスト
  • このエントリーをはてなブックマークに追加

Apache::Testの基本的な使い方

 前回紹介した方法では、tディレクトリ以下のテストスクリプトを記述すれば、proveコマンドですぐにテストを実行できましたが、Apache::Testではテストスクリプトを記述する前に、初期設定としていくつかのファイルを作成します。

最初に作成するファイル

 Apache::Testでは、Apacheの設定ファイルなどを自動的に生成してくれますが、そのためにはMakefile.PLとt/TEST.PLファイルを修正または作成しておく必要があります。

 Makefile.PLはcatalyst.plコマンドでスケルトンを作成した際に自動的に生成されますが、このMakefile.PLの先頭部分を次のように書き換えます。

[リスト12]Makefile.PLの一部
use strict;
# (1)'make test'と'make clean'の処理を入れ替える
use Apache::TestMM qw(test clean);
use inc::Module::Install;

# (2)'make test'時にt/TESTを使用するための準備
Apache::TestMM::filter_args();
Apache::TestMM::generate_script('t/TEST');

# 省略

 ここではApache::TestMMを使用して、Makefile.PLで作成されるMakefileの処理を変更し、make testmake cleanの処理でt/TESTスクリプトを呼び出すように定義されています。そしてt/TESTはt/TEST.PLファイルから生成されます。

 Perlのモジュールをmakeする場合など、「perl Makefile.PL」を実行してMakefileを作成する例は多く見かけると思いますが、これはExtUtils::MakeMakerというモジュールを使用して実現しています。Apache::TestMMは、このExtUtils::MakeMakerへのラッパとして、Apache::Testで必要とするための機能を提供しています。

 t/TEST.PLスクリプトには、Apache::TestRunPerlを実行するための処理を記述します。Apache::Testには、Apacheの設定とテストの実行を行うためのApache::TestRunクラスが含まれており、この派生クラスであるApache::TestRunPerlでは、さらにmod_perlに関する設定などを行います。

[リスト13]t/TEST.PL
use Apache::TestRunPerl;
Apache::TestRunPerl->new->run(@ARGV);

 Makefile.PLとt/TEST.PLを用意できたら、アプリケーションディレクトリで「perl Makefile.PL」を実行することでMakefileやt/TESTなどのファイルが作成されます。

Apache::Testを使用したテストの実行

 Makefileが作成できたら、通常の「make test」でtディレクトリ以下のテストスクリプトが実行されます。

[リスト14]テストの実行
$ perl Makefile.PL
$ make
(1)make testですべてのテストを実行
$ make test
(2)t/TESTを使用してすべてのテストを実行
$ t/TEST
(3)単体の.tテストスクリプトを実行
$ t/TEST t/01app.t

 (2)のように引数無しで「t/TEST」を実行した場合にも「make test」と同様にすべてのテストを実行しますが、ソースを変更している場合には「make」で最新の状態に更新しておく必要があります。

 また単体の.tテストスクリプトだけを実行したい場合には、(3)のように「t/TEST」の引数としてテストスクリプトファイルを指定します。

 Windows環境では次のようにしてテストを実行します。

[リスト15]Windows環境でのテストの実行
C:\CodeZine\ApacheSample> perl Makefile.PL
C:\CodeZine\ApacheSample> nmake
# ここでhttpdのフルパスを設定
C:\CodeZine\ApacheSample> nmake test
# t/TESTの実行
C:\CodeZine\ApacheSample> perl t\TEST
C:\CodeZine\ApacheSample> perl t\TEST t\01app.t

 ActivePerlにはnmake.exeが付属しているので、それを使用してnmakeおよびnmake testを実行します。このときhttpd.exeのフルパスを聞かれますので、例えば「C:\Apache2.2\bin\httpd.exe」のように指定します。

 t/TESTを実行する場合にはperl.exeの引数として渡すことで、Linux環境と同様にテストを実行できます。

make testで生成されるファイル

 make testを実行すると、いくつかのファイルとディレクトリがt以下に作成されます。

make testで作成されるディレクトリ
パス 説明
conf 設定ファイルを格納するディレクトリ
htdocs デフォルトのDocumentRootディレクトリ
logs ログディレクトリ

 t/conf以下の*.confや*.plファイルは実行時に自動生成されるファイルのため、ここに設定値を記述しても毎回上書きされてしまいます。ServerNameやPortなどの値を変更するには次のようにt/TESTの引数として渡します。

[リスト16]t/TESTの引数としてポート番号を指定
ポート番号を8888にして起動
$ ./t/TEST -port 8888

 主要なオプションには次のようなものがあります。

t/TESTで指定可能なオプション(一部)
オプション デフォルト 説明
-servername localhost サーバ名
-port 8529 ポート番号
-minclients 1 クライアント数の最小値
-maxclients mixclients+1 クライアント数の最大値
-startup_timeout 60 サーバが起動するまでの待ち時間(秒)
-top_dir $PWDで得られるパス トップレベルディレクトリ
-t_dir $top_dir/t テストディレクトリ
-serverroot $t_dir サーバルートディレクトリ
-documentroot $ServerRoot/htdocs ドキュメントルートディレクトリ
-clean   生成されたテストファイルをすべて削除

 t/TESTで指定可能なオプションの一覧は「./t/TEST -help」で確認できます。

 テスト用に一部のパラメータなどを定義したい場合には、t/conf/extra.conf.inファイルにパラメータを記述します。例えばApacheSampleアプリケーションの定義を追加するには、t/conf/extra.conf.inファイルに次のように記述します。

[リスト17]Catalystの定義を記述したt/conf/extra.conf.in
PerlModule ApacheSample
<Location />
  SetHandler modperl
  PerlResponseHandler ApacheSample
</Location>

次のページ
Apache::Testを使用したテストの定義

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Webアプリケーションフレームワーク「Catalyst」入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 花田 善仁(ハナダ ヨシヒト)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5208 2010/06/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング