Test::More
テストを実行し、呼び出し元を中止する機能を備えたモジュールが必要になることがよくありますtest_plan
。のプラグインリストを設定する一連のテストがありますCatalyst::Test
。それらが存在するかどうかを確認するためにテストチェックを行う必要はありません。代わりに、これらのプラグインが存在しない場合、スクリプトを中止したいと思います。
のバグを追跡しようとしていましたが、Catalyst::Authentication::Store::DBI::ButMaintained
このバグがに存在することに気付きましたCatalyst::Authentication::Store::DBI
。ここにあります:
eval {
require Catalyst::Model::DBI;
require Catalyst::Plugin::Session;
require Catalyst::Plugin::Session::State::Cookie;
require Catalyst::Plugin::Session::Store::File;
require DBD::SQLite;
require Test::WWW::Mechanize::Catalyst;
} or plan skip_all => $@;
...
$ENV{'TESTAPP_PLUGINS'} = [ qw(
Authentication
Session
Session::Store::File
Session::State::Cookie
Authorization::Roles
) ];
ご覧のとおり、は包含をeval/skip_all
チェックしませんAuthorization::Roles
が、プラグインであるため、テストはそれに依存します。
ただし、別の質問があります。これよりもテストの依存関係を指定するためのより洗練された方法はありますか?私の目標は元の作者と同じであることを忘れないでください。テスト要件が存在しない場合は、単にテストをスキップしたいと思います。理想的には、この場合、Catalyst::Test
プラグインメカニズムをラップするためにハックしCatalyst::Plugin::*
て、残りの部分をなしで実行するためのより良い方法を見つけたいと思いeval/skip_all
ます。