Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Perl中模拟超类调用(使用Test :: MockObject)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一些测试中使用mockObjects,只需要通过调用SUPER类来测试函数,我似乎无法使其工作. UNIVERSAL可以调用$this-> SUPER :: save()不被嘲笑吗?如果是的话,你是怎么做到的?

谢谢.

编辑:

找到了!

使用Test :: mockObject中的fake_module

所以,假设您的基本模块是Some :: Module,并且您的子例程正在进行$this-> SUPER :: save调用,请使用

@H_832_12@my $child_class_mockup = Test::mockObject->new(); $child_class_mockup->fake_module( 'Some::Module',save => sub () { return 1; } );

让问题保持开放几天,在接受这个答案之前获得关于这样做的不同方式/库(如果,SUPER呼叫有超级呼叫?)的输入.

解决方法

找出对象的超类(或其中一个超类,因为Perl有多重继承)的名称,并在超类的包中定义save调用.

例如,如果你有

package MyClass;
use YourClass;
our @ISA = qw(YourClass);   # <-- name of superclass
...
sub foo {
    my $self = shift;
    ...
    $self->SUPER::save();    # <--- want to mock this function in the test
    ...
}

sub save {
    # MyClass version of save method
    ...
}

然后在你的测试脚本中,你会说

no warnings 'redefine';     # optional,suppresses warning

sub YourClass::save {
    # mock function for $yourClassObj->save,but also
    # a mock function for $myClassObj->SUPER::save
    ...
}

大佬总结

以上是大佬教程为你收集整理的在Perl中模拟超类调用(使用Test :: MockObject)全部内容,希望文章能够帮你解决在Perl中模拟超类调用(使用Test :: MockObject)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。