如何在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模拟代码?
答
设置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
要么设置PERL5LIB,包括你的T目录,或者只是'使用lib'你的测试文件中。 – xxfelixxx