私は現在、いくつかのテストファイルの最初に以下を持っていますが、非常にDRYではありません。しかし、私はそれを自分のファイルに移動する最良の方法が何であるかは分かりません。助言がありますか?これらのテストをもっと乾燥させるにはどうすればいいですか?
#!/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
を返そうとしましたが、動作していません。私は正確に何がライブラリに入る必要があり、何が正確にテストに入る必要があるのか把握しようとしています。
「停止する」とはどういう意味ですか?何が起こるのですか?エラーメッセージが表示されますか? – cjm