2

現在、いくつかのテスト ファイルの先頭に次のものがありますが、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が、うまくいかないようです。ライブラリに正確に何が必要で、テストに正確に何が必要かを理解しようとしています。

4

2 に答える 2

2

それをモジュールにして (たとえばt::MyApp)、 に変更my $tour $tて、モジュールを export にし$tます。import(テスト スクリプトで厳密と警告を有効にするカスタム メソッドを作成することもできます。)

于 2011-07-12T23:11:38.940 に答える
1

これらの行を含むモジュールを作成し、.pmいくつかのオブジェクト指向コードを使用し$tてボイラープレート コードから およびその他の情報を取得し、次にuseテストから取得することができます。

于 2011-07-12T23:13:26.733 に答える