如何在 Perl 单元测试中重用模拟对象?
How to reuse mock objects in Perl unit tests?
我的模块有一堆单元测试,我发现我将相同的模拟和设置代码从一个复制到另一个。我怎样才能擦干它并重新使用模拟代码?
我已将这个简单的模拟对象放在我的测试旁边:
package MockObject;
1;
如果我在测试用例中只说use MockObject;
,make test
找不到MockObject。说得通;毕竟,它没有安装在系统范围内,也不在被测模块旁边。
我可以 运行 我的测试 prove -I lib -I t t/*.t
但我想保留 make test
,如果只是为了懒惰少输入几个字符。
由于模拟对象不是一个完整的模块,无论如何都不应该正式安装,我不能也不想在 Makefile.PL 中设置 TEST_REQUIRES
。
将 test => { FILES => 't/*.t', INC => 't/' }
添加到 Makefile.PL 没有帮助。
我如何(简单地)将 Perl 模拟代码与 MakeMaker 生成的 Makefile 重用?
设置 PERL5LIB 或在脚本中添加 use lib
。我发现 FindBin package 对于设置测试的 lib 路径很有用。
use FindBin qw($Bin);
use lib "$Bin/../lib";
其中:
$Bin - path to bin directory from where script was invoked
我的模块有一堆单元测试,我发现我将相同的模拟和设置代码从一个复制到另一个。我怎样才能擦干它并重新使用模拟代码?
我已将这个简单的模拟对象放在我的测试旁边:
package MockObject;
1;
如果我在测试用例中只说use MockObject;
,make test
找不到MockObject。说得通;毕竟,它没有安装在系统范围内,也不在被测模块旁边。
我可以 运行 我的测试 prove -I lib -I t t/*.t
但我想保留 make test
,如果只是为了懒惰少输入几个字符。
由于模拟对象不是一个完整的模块,无论如何都不应该正式安装,我不能也不想在 Makefile.PL 中设置 TEST_REQUIRES
。
将 test => { FILES => 't/*.t', INC => 't/' }
添加到 Makefile.PL 没有帮助。
我如何(简单地)将 Perl 模拟代码与 MakeMaker 生成的 Makefile 重用?
设置 PERL5LIB 或在脚本中添加 use lib
。我发现 FindBin package 对于设置测试的 lib 路径很有用。
use FindBin qw($Bin);
use lib "$Bin/../lib";
其中:
$Bin - path to bin directory from where script was invoked