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

时间:2016-07-06 03:25:48

标签: perl unit-testing code-reuse

我的模块有一堆单元测试,我发现我将相同的模拟和设置代码从一个复制到另一个。我怎样才能干掉它并重用模拟代码?

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

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 个答案:

答案 0 :(得分:1)

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

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

其中:

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