1

我想問有沒有什麼方法可以用單元測試或任何其他方式來測試程序代碼。測試非OOP PHP

例如,我有以下非常簡單的代碼:

$a = 10; 
$b = 20; 

for($i = $a; $i < $b; $i++){ 
    echo 'Loop ' . $i . PHP_EOL; 
} 

我知道我可以在功能與isset()和其它構建檢查變量存在,還可以檢查變量的類型,與輸出緩衝我可以獲得輸出並計算循環執行次數, 但是...我可以檢查是否有for循環不是while循環?

我可以得到整個PHP文件,並與正則表達式發現它,但也許有某種魔術功能,告訴我這一點。

+0

爲什麼要測試一種特定類型的循環的存在?這應該不重要。 – ShiraNai7

+0

@ ShiraNai7我知道,但只需要知道使用哪種類型的循環。 – rafwlaz

回答

2

對於缺少封裝的傳統文件,我建議您儘可能在最高級別進行測試。

對於這個文件是否可以在Web服務器級別進行測試?哪一個是功能測試,而不是單元測試?即:

  • 啓動你的測試套件
  • 年初Web服務器作出這對你發佈的上述文件
  • 斷言含量Loop ...\n ...預期端點的請求。

只是在輸出上而不是在實現上(使用什麼樣的循環,被設置的變量等)應該允許你更容易地重構代碼,同時仍然保護測試,確保輸出符合預期。

如果Web服務器功能測試是不可能的,你也許可以創建一個單元測試,捕捉以類似的方式輸出:

ob_start(); 
include 'your_php_file_listed_above'; 
$out = ob_get_clean(); 

然後你就可以斷言$出含有Loop .. \n ...正確。

我建議不要在實現的具體細節上聲明斷言,即使用哪個循環,設置哪些變量,因爲它們可能會減慢重構。