我正在重构一个基于Test::Class
构建的测试套件,并希望在基本测试类和某些版本中利用Moose这样的Roles细节作为MooseX::NonMoose
。测试类
我试过了:
MooseX::InsideOut
make_immutable( inline_constructor => 0 );
虽然我之前从未使用过这些{{3}}模块中的任何一个,但无法确定我是否正确使用了它们。在我的所有试验中,我在运行测试套件时收到以下错误:
Test :: Class internals似乎很困惑。你在a中覆盖了new()吗? 子类还是通过多重继承?
产生此故障的简单样本:
基础测试课程:
package My::Test::Class::Base;
use Moose;
use Test::Class::Most;
1;
测试类:
package Test::Package::Class;
use Moose;
use Test::Class::Most parent => 'My::Test::Class::Base';
sub blah : Tests() {
my $test = shift;
can_ok($test->class(), 'blah');
}
1;
正在测试的课程:
package Package::Class;
use Moose;
sub blah {
my $self = shift;
return 1;
}
1;
那么,我做错了什么?
答案 0 :(得分:2)
这里的问题是Test :: Class不希望你覆盖它的new()构造函数,但是Moose就是这样做的。人们一直在问我如何处理这个,所以我最近写了Test::Class::Moose。它目前仅在Github上,因为它是alpha,但它似乎相当合理。请注意,与Test::Class::Most类似,为您提供了常用的测试功能。
如果您尝试,请告诉我并提供反馈,以便我更好地了解人们的需求。
如果你想在CPAN上有一些东西,有几种选择。
它使用MooseX::Declare。很多人不喜欢这样。
您可能找不到直观的语法,但它似乎是一个很好的模块。
与Test :: Routine相同的问题。