加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何将Moose与Test :: Class一起使用?

发布时间:2020-12-15 22:03:28 所属栏目:大数据 来源:网络整理
导读:我正在重构一个由同事建立的测试套件,并希望在这样做时使用Test :: Class [:: Most].在我开始的时候,我发现我可以使用一些Moose角色来解码代码.但是,它似乎不太可能 – 我收到像这样的错误消息: Prototype mismatch: sub My::Test::Class::Base::blessed: n
我正在重构一个由同事建立的测试套件,并希望在这样做时使用Test :: Class [:: Most].在我开始的时候,我发现我可以使用一些Moose角色来解码代码.但是,它似乎不太可能 – 我收到像这样的错误消息:
Prototype mismatch: sub My::Test::Class::Base::blessed: none vs ($) at
/usr/lib/perl5/vendor_perl/5.8.8/Sub/Exporter.pm line 896

所以问题是:我可以将Moose与Test :: Class一起使用,如果是这样,怎么样?

PS:代码是这样的:

package My::Test::Class::Base;
use Moose;
use Test::Class::Most;

with 'My::Cool::Role';

has attr => ( ... );

解决方法

Test :: Deep(通过Test :: Most通过Test :: Class :: Most加载)导出它自己的祝福以及它可能不应该的许多其他东西.它没有记录. Moose还出口更常见的Scalar :: Util :: blessed.由于Scalar :: Util :: blessed相当常见,因此Test :: Deep不应该导出自己不同的祝福.

不幸的是,没有好办法阻止它.我建议在My :: Test :: Class :: Base中执行以下hack:

package My::Test::Class::Base;

# Test::Class::Most exports Test::Most exports Test::Deep which exports
# an undocumented blessed() which clashes with Moose's blessed().
BEGIN {
    require Test::Deep;
    @Test::Deep::EXPORT = grep { $_ ne 'blessed' } @Test::Deep::EXPORT;
}

use Moose;
use Test::Class::Most;

并将问题报告给Test::Deep和Test::Most.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读