2011-07-12 3 views
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を返そうとしましたが、動作していません。私は正確に何がライブラリに入る必要があり、何が正確にテストに入る必要があるのか​​把握しようとしています。

+0

「停止する」とはどういう意味ですか?何が起こるのですか?エラーメッセージが表示されますか? – cjm

答えて

2

モジュールをmy $tからour $tに変更し、モジュールを$tにエクスポートします(例:t::MyApp)。 (あなたはまた、テスト・スクリプトに厳しい&警告をオンにするためのカスタムimportメソッドを書くことができます。)

1

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

関連する問題