我经常希望有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
.