perl - 如何模拟 Perl 的内置反引号运算符?

标签 perl unit-testing backticks qx

我想对我使用反引号的 Perl 程序进行单元测试。有没有办法模拟反引号,以便它们执行与执行外部命令不同的操作?

Another question shows what I need ,但在 Ruby 中。不幸的是,我不能选择在这个项目中使用 Ruby,也不想避免使用反引号。

最佳答案

您可以*模拟内置 readpipe 功能。 Perl 会在遇到反引号或 qx 时调用您的模拟函数。表达。

BEGIN {
  *CORE::GLOBAL::readpipe = \&mock_readpipe
};

sub mock_readpipe {
  wantarray ? ("foo\n") : "foo\n";
}

print readpipe("ls -R");
print `ls -R`;
print qx(ls -R);
$ perl mock-readpipe.pl
foo
foo
foo

* - 如果您有 perl version 5.8.9或以后。

关于perl - 如何模拟 Perl 的内置反引号运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3678655/

相关文章:

perl - 提交表单后,如何使用 WWW::Mechanize 下载文件?

javascript - 如何对调用自身的函数进行单元测试

bash - Perl-停止错误出现在命令行输出中

awk - 使用 Awk 评估命令

Perl LibXML - InsertAfter/addSibling

perl - 从 perl 哈希结构中获取数据?

regex - Perl 中的正则表达式数值范围失败

unit-testing - 测试未显示在测试资源管理器 (Nunit) 中

javascript - 如何使用 Jasmine 在 AngularJS 中测试 .catch Promise 返回?

bash - 使用 bash 的 Perl 反引号