如何在Perl单元测试中重用模拟对象?

如何在Perl单元测试中重用模拟对象?,perl,unit-testing,code-reuse,Perl,Unit Testing,Code Reuse,我为我的模块做了一系列的单元测试,我发现我将相同的模拟和设置代码从一个复制到另一个。我怎样才能去掉这些代码并重用模拟代码呢 我将这个简单的模拟对象放在测试旁边: package MockObject; 1; 如果我只是说使用MockObject在测试用例中,进行测试找不到MockObject。有道理;毕竟,它不是在系统范围内安装的,也不是在测试模块的旁边 我可以用prove-I lib-I t/*.t运行我的测试,但我想保留make test,如果只是因为少键入几个字符的惰性 由于mock对象

我为我的模块做了一系列的单元测试,我发现我将相同的模拟和设置代码从一个复制到另一个。我怎样才能去掉这些代码并重用模拟代码呢

我将这个简单的模拟对象放在测试旁边:

package MockObject;
1;
如果我只是说
使用MockObject在测试用例中,
进行测试
找不到MockObject。有道理;毕竟,它不是在系统范围内安装的,也不是在测试模块的旁边

我可以用
prove-I lib-I t/*.t
运行我的测试,但我想保留
make test
,如果只是因为少键入几个字符的惰性

由于mock对象不是完整的模块,也不应该正式安装,因此我不能也不想在Makefile.PL中设置
TEST\u REQUIRES

test=>{FILES=>'t/*.t',INC=>'t/'}
添加到Makefile.PL没有帮助


如何(简单地)将Perl模拟代码与MakeMaker生成的Makefile一起重用?

在脚本中设置PERL5LIB或添加
使用lib
。我发现设置测试的lib路径很有用

use FindBin qw($Bin);
use lib "$Bin/../lib";
其中:

$Bin - path to bin directory from where script was invoked

要么将PERL5LIB设置为包含您的t目录,要么在您的测试文件中使用
uselib
,我仍然需要将其复制到每个测试用例中,但这比复制所有的模拟代码要好得多,它不会干扰全局设置,并且可以正常工作。