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

问题描述:

我有一堆单元测试我的模块,我发现我复制相同的模拟和设置代码从一个到另一个。我该如何干起来并重新使用模拟代码?如何在Perl单元测试中重用模拟对象?

我已经放在这个简单的模仿对象旁边,我的测试:

package MockObject; 
1; 

如果我只是说在测试用例use MockObject;make test找不到MockObject。说得通;毕竟,它没有安装在系统范围内,它不在被测模块旁边。

我可以用prove -I lib -I t t/*.t运行我的测试,但我想保留make test,如果只是懒惰地输入少了几个字符。

由于模拟对象不是完整的模块,不应该正式安装,我不能也不想在Makefile.PL中设置TEST_REQUIRES

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

我该如何(简单地)将MakeMaker生成的Makefile重复使用Perl模拟代码?

+1

要么设置PERL5LIB,包括你的T目录,或者只是'使用lib'你的测试文件中。 – xxfelixxx

设置PERL5LIB或在脚本中添加use lib。我发现FindBin package用于设置测试的lib路径。

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

其中:

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

我只是使用'use lib't';',我仍然需要复制到非常大的测试用例,但这比复制所有模拟代码好多了,不会混淆全局设置,并且工作正常。 – Robert