2012-03-19 141 views
1

我們正在使用CodeIgniter創建一個RESTful API,並試圖確定如何爲控制器創建測試。控制器從客戶端應用程序獲取一些輸入,使用一個或多個模型執行一些業務邏輯,然後輸出JSON。測試CodeIgniter控制器

測試的目的主要是迴歸測試 - 以確保主要不是web/php開發人員的客戶端工程師在需要觸摸服務器代碼時不會破壞某些東西。

如何測試控制器在CI中的操作?

我目前有兩個想法: 1.)創建一個測試函數/類,用數據庫進行設置,然後通過curl調用控制器,模擬客戶端的行爲。 2.)不要測試控制器,保持模型中的所有邏輯併爲模型編寫測試。

任何想法會更強大/更易於使用? (或額外的建議?)

+0

我想有一個CI平靜的api庫在某個地方漂浮,瀏覽一下,看看它是如何工作的,以指引你走在正確的道路上。對不起,我不能指出你的鏈接。 – Philip 2012-03-19 20:44:12

+0

他們得到了單元測試,但我不知道這是否是你需要的。只是發佈,以防止http://codeigniter.com/user_guide/libraries/unit_testing.html – Joseph 2012-03-19 22:21:48

回答

0

如果你想質量測試,你需要兩個。 一個測試你的代碼,以及它如何處理錯誤 和一個測試客戶端本身會看到潛在問題。

1

以及CodeIgniter's own testing library(CodeIgniter 2)有可能use PHPUnit with CodeIgniter with FooStack。如果您使用的是CodeIgniter 2.x,那麼集成並不像CodeIgniter 1.x那樣簡單,但我已經看到它完成了。

FooStack本身帶有包含模型和控制器的示例測試等等,並且可以爲您提供一個很好的起點。

另一種測試你的控制器的方式,你說的是返回JSON,可能是使用Selenium IDE。這將允許您運行簡單的測試,檢查所需的輸入將返回預期的輸出,而不必擔心如何完成。但是FooStack或者單元測試庫可能會給你更多的覆蓋和信心。

0

您可以通過表單數據傳遞到您的測試控制器一樣

$_POST['name'] = 'testuser'; 
$this->CI->index_post(); 
$data = output(); 
# Decode Response data 
$actualArray = json_decode($data, true); 

$this->assertNotEmpty($actualArray['status'], 'Status is empty'); 

這樣你可以通過你的測試/控制器驗證控制器也驗證控制器。