С 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
, но тест зависит от него в силу того, что он является плагином.
У меня есть еще один вопрос - есть ли более элегантный способ указать Test-зависимости, чем этот? Имейте в виду, моя цель такая же, как и у оригинальных авторов. Я просто хочу пропустить тест, если тестовые требования не существуют. В идеале, в этом случае я бы хотел взломать Catalyst::Test
, чтобы обернуть механизм плагина для Catalyst::Plugin::*
, а затем найти лучший способ сделать остальную часть этого без eval/skip_all
.