Jon*_*ner 11 perl unit-testing backticks qx
我想对使用反引号的我的Perl程序进行单元测试.有没有办法模拟反引号,以便他们可以做一些与执行外部命令不同的东西?
另一个问题显示了我需要的东西,但是在Ruby中.不幸的是,我不能选择在这个项目中使用Ruby,也不想避免反引号.
mob*_*mob 16
你可以*模拟内置readpipe函数.Perl会在遇到反引号或qx表达式时调用你的mock函数.
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);
Run Code Online (Sandbox Code Playgroud)
$ perl mock-readpipe.pl
foo
foo
foo
Run Code Online (Sandbox Code Playgroud)
* - 如果你有perl版本5.8.9或更高版本.