2008-12-30 76 views
1

我想在控制檯模式下使用php並創建一個環境來測試我的功能。使用php cli創建測試環境

我不想被迫使用Web瀏覽器,並且每次我想測試一個函數時都會創建一個新文件。

我想訪問控制檯中的函數,然後返回結果。

我該怎麼做?

更新:

也許是我不好解釋這一點。我只想看看函數返回的結果。

也許我必須學習單元測試,但目前我只想要一個交互式控制檯,它允許我逐個測試所有功能。

在我的情況下,我必須加載WordPress的功能(我知道如何與一個普通的.php文件,然後瀏覽器來解析文件),但我不,如果有可能做到這一點與PHP從命令行。

+0

我看過你的問題和你的後續解釋,但仍然沒有完全理解你想達到的目標。你想執行shell PHP來驗證wordpress函數返回正確的值嗎? – mark 2008-12-30 10:53:27

回答

1

我在過去使用phpsh,發現它非常有用。一旦你開始它,你將需要chdir()到你的文件的位置,然後明確地require()任何文件包含你需要測試的功能。然後你可以通過在shell中輸入函數來測試你的函數調用,例如var_dump(some_function(1, 2));

0

您將要閱讀一般意義上的「單元測試」,然後嘗試將它們應用於PHP。

您正在使用的框架(如果有),代碼樣式以及要運行的測試將確定您需要使用的確切方法。只有首先了解單元測試的概念,並將其應用到您的編碼最佳實踐中,才能在這方面取得進展。

0

如何:

php -a 

如果您編譯readline的支持PHP它會更看中。

1

我想你應該更確切地說明什麼樣的功能。 Wordpress不提供類似的東西,大多數PHP應用程序不會。

我也認爲你在這裏呼喚麻煩,因爲這種應用程序在這種環境下沒有開發出來。

下面是一個試圖從函數中調用「current_time()」的示例。PHP和嘗試我不得不這樣做只是爲了實現它不會工作方式:


php -r 'require "functions.php"; var_dump(current_time("mysql"));' 


Fatal error: Call to undefined function apply_filters() in functions.php on line 346 

試圖


php -r 'require "functions.php"; require "plugin.php"; var_dump(current_time("mysql"));' 


Fatal error: Call to undefined function wp_cache_get() in functions.php on line 351 

嘗試


php -r 'require "functions.php"; require "plugin.php"; require "cache.php"; var_dump(current_time("mysql"));' 


Fatal error: Call to a member function get() on a non-object in cache.php on line 93 

望着源中的最後一個錯誤我看到


function wp_cache_get($id, $flag = '') { 
    global $wp_object_cache; 

    return $wp_object_cache->get($id, $flag); 
} 

使用全局變量使得測試在其它環境皮塔如果不是不可能的。

如果這不是你想要做的,你必須在你的問題中更具體/詳細。