Test::More には、すべてのサブテストの前にコードのブロックを実行する何らかのメカニズムがありますか? 私は自分がすべてのテストで同じアレンジメントを書いていることに気づきました。それをbeforeブロックなどに入れて、人生を楽にしたいと思いますか? perldocs を見ましたが、このために特別に構築されたものは見当たりませんでした?
user342706
質問する
386 次
2 に答える
5
自分で行うのはかなり簡単です:
use Hook::LexWrap qw( wrap );
wrap $_, pre => sub { ... }
for qw( is ok ... );
于 2012-05-10T15:23:50.723 に答える
1
Test::More
Test::Builder::Module::builder
のテストは、すべてのテストの前に実行されるようです。その実装をこれに置き換えることができます。
{ package Test::Builder::Module;
my $old_imp = \&Test::Builder::Module:builder;
no warnings 'redefine';
sub builder {
Mypackage::setup_test();
goto &$old_imp;
}
}
それが危険すぎると思われる場合は、実際には次のように呼び出します。
sub is ($$;$) {
my $tb = Test::More->builder;
return $tb->is_eq(@_);
}
したがって、親クラスの実装を呼び出すため、builder
forの実装をプッシュインするだけで済みます。Test::More
{ package Test::More;
sub builder {
&stuff_I_want_to_do;
my $inv = shift;
return $inv->SUPER::builder( @_ );
# OR return Test::Builder->new;
}
}
于 2012-05-10T15:24:53.453 に答える