在Perl中模拟超类调用(使用Test :: MockObject)
发布时间:2020-12-15 21:50:31 所属栏目:大数据 来源:网络整理
导读:我在一些测试中使用MockObjects,只需要通过调用SUPER类来测试函数,我似乎无法使其工作. UNIVERSAL可以调用$this- SUPER :: save()不被嘲笑吗?如果是的话,你是怎么做到的? 谢谢. 编辑: 找到了! 使用Test :: MockObject中的fake_module 所以,假设您的基本
我在一些测试中使用MockObjects,只需要通过调用SUPER类来测试函数,我似乎无法使其工作. UNIVERSAL可以调用$this-> SUPER :: save()不被嘲笑吗?如果是的话,你是怎么做到的?
谢谢. 编辑: 找到了! 使用Test :: MockObject中的fake_module 所以,假设您的基本模块是Some :: Module,并且您的子例程正在进行$this-> SUPER :: save调用,请使用 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 ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |