How do I mock Perl's built-in backticks operator?

后端 未结 2 1966
再見小時候
再見小時候 2021-01-02 02:26

I\'d like to unit test a Perl program of mine that is using backticks. Is there a way to mock the backticks so that they would do something different from executing the exte

2条回答
  •  太阳男子
    2021-01-02 02:56

    You can* mock the built-in readpipe function. Perl will call your mock function when it encounters a backticks or qx expression.

    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
    

    * - if you have perl version 5.8.9 or later.

提交回复
热议问题