我如何模拟Perl的内置backticks操作符?

前端之家收集整理的这篇文章主要介绍了我如何模拟Perl的内置backticks操作符?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想单元测试一个使用反引号的我的Perl程序.有没有办法模拟反引号,以便它们执行与执行外部命令不同的内容

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

解决方法

您可以*模拟内置的 readpipe功能.当Perl遇到反引号或qx表达式时,Perl会调用你的mock函数.
  1. BEGIN {
  2. *CORE::GLOBAL::readpipe = \&mock_readpipe
  3. };
  4.  
  5. sub mock_readpipe {
  6. wantarray ? ("foo\n") : "foo\n";
  7. }
  8.  
  9. print readpipe("ls -R");
  10. print `ls -R`;
  11. print qx(ls -R);
  1. $perl mock-readpipe.pl
  2. foo
  3. foo
  4. foo

* – 如果您有perl version 5.8.9或更高版本.

猜你在找的Perl相关文章