Test::More 是否有某种机制在每个子测试之前运行代码块?我发现自己在每次测试中都写了相同的安排,我想通过将它放在 before 块或其他东西中来让我的生活更轻松?我查看了 perldocs,但没有看到专门为此构建的任何内容?
user342706
问问题
386 次
2 回答
5
于 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(@_);
}
因此,您可以只推入 for 的实现builder
,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 回答