В настоящее время у меня есть следующее в начале нескольких тестовых файлов, но это очень не СУХОЙ. Но я не совсем уверен, что лучший способ перенести это в свой файл. Есть предложения?
#!/usr/bin/perl
use strict;
use warnings;
BEGIN {
use Test::More;
use namespace::clean qw( pass );
}
use FindBin;
use Cwd qw( realpath );
use Dancer qw( :syntax );
use Test::WWW::Mechanize::PSGI;
set apphandler => 'PSGI';
my $appdir = realpath( "$FindBin::Bin/.." );
my $t = Test::WWW::Mechanize::PSGI->new(
app => sub {
my $env = shift;
setting(
appname => 'MyApp',
appdir => $appdir,
);
load_app 'MyApp';
config->{environment} = 'test';
Dancer::Config->load;
my $request = Dancer::Request->new( env => $env );
Dancer->dance( $request );
}
);
$t->agent('test');
$t->get_ok('/login') or diag $t->content;
$t->submit_form_ok({
form_name =>'loginform',
fields => {
username => 'myuser',
password => 'foo',
},
}, 'login ok' );
### END BOILERPLATE ###
обновление
к сожалению, часть моей проблемы с переносом этого в библиотеку заключается в том, что, как только я это сделаю, код перестает работать. Я попытался заключить его в подпрограмму и вернуть $t
, но это не сработало. Я пытаюсь выяснить, что именно нужно ввести в библиотеку, а что именно нужно пройти в тест.