【问题标题】:How to reuse mock objects in Perl unit tests?如何在 Perl 单元测试中重用模拟对象?
【发布时间】:2023-03-22 02:06:01
【问题描述】:

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

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

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 设置为包含您的 t 目录,要么将 use lib 设置在您的测试文件中。

标签: perl unit-testing code-reuse


【解决方案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

【讨论】:

  • 我只是在使用use lib 't';,我仍然需要将其复制到非常测试用例中,但这比复制所有模拟代码要好得多,不会弄乱全局设置,并且可以工作.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
相关资源
最近更新 更多