2012-02-21 36 views
4

我有一個功能,使HTTP請求與捲曲是回落到file_get_contents()如果捲曲是不可用的系統上。編程禁用特定PHP函數測試

我想編寫該功能(利用PHPUnit的)單元測試,其中捲曲適用於某些測試,不適用於其他。

是否有可能以編程方式禁用PHP函數,如curl_init()

我知道我可以在php.ini中使用disable_functions設置,但是我希望找到一種方法來在單元測試之間進行單元測試,而無需在運行之間重新配置PHP。

+0

是否'的ini_set( 'disable_functions選項', '...');'工作? – Crozin 2012-02-21 15:43:16

+0

@Crozin,不,'disable_functions'只適用於php.ini。 http://www.php.net/manual/en/ini.list.php – Brad 2012-02-21 15:44:27

回答

4

您可以使用runkit_function_remove,以消除任何定義的功能,我想:

runkit_function_remove('curl_init'); 

而且,按照文檔:

注:默認情況下,只有用戶空間的功能可以被移除,重命名或修改。爲了覆蓋內部功能,您必須啓用php.inirunkit.internal_override設置。

+0

,將工作,謝謝!我目前沒有安裝runkit,但我會稍微安排它。 – Brad 2012-02-21 15:46:17