前幾天下班前同事說小鐵 jaceju 介紹了 Codeception/AspectMock 這個把 PHP function 抽換掉的套件,不需要靠 PECL 另外裝,不過缺點是只能抽換 namespace 裡面的 function... 不過這樣對於補 code coverage 也很夠了 :o
測了一下,寫了個小程式:
<?php namespace myscript; require __DIR__ . '/vendor/autoload.php'; \AspectMock\Kernel::getInstance()->init(); use AspectMock\Test; echo time(), "\n"; Test::func(__NAMESPACE__, 'time', 'now'); echo time(), "\n";
然後跑出來變成:
1466612797 now
而字串 'now'
也可以換成 anonymous function,這樣已經可以做不少事情了...