2012-01-11 137 views
2

我一直在使用php超過5年。最近我曾在rubyonrails工作。我在這個非常好的框架中完成了一些項目。我最喜歡Rails和Ruby:他們都促進了自動化測試,並且有很多豐富的庫。與PhpUnit相比,Rspec和TestUnit非常容易學習。如何測試kohana模型,控制器

我要在接下來的一個月裏開發一個非常大的項目。我是cakephp的粉絲,但我意識到cakephp不會滿足我的項目要求。我是一個快速學習者。從Kohana官方網站閱讀文檔後,我將使用Kohana進行這個項目。

已經做了一些Kohana的搜索後,我仍然對

  1. 測試模塊是缺乏文檔的幾個主題來關注。我不清楚如何測試模型,控制器,功能測試。任何人都可以提供我的想法,教程,例子,資源?
  2. 應用程序環境不太清楚。對不起,因爲我是紅寶石樂隊的漂亮家庭。我覺得使用rails的環境對我更有意義。我可以在特定環境中擁有一顆寶石。例如我只有測試環境的rspec gem(用於自動測試),並且我只有生產用的獨角獸寶石。對於那些剛接觸ruby的人來說,寶石就像kohana中的「模塊」。誰能告訴我如何告訴kohana只在測試環境中加載「unittest」?因爲我不想在生產環境中加載unittest。
  3. 在Rails中有一個名爲rails console的應用程序控制臺模式。通過導軌控制檯,我們可以通過控制檯模式與模型進行交互Kohana中有沒有類似的東西?
+0

Brandons爲第二個問題提出了一個非常好的解決方案http://forum.kohanaframework.org/discussion/comment/68904?post#Form_Body – 2012-01-16 04:43:46

回答

3

我只回答你的問題,仍然更好然後沒什麼2)

AD2

if (Arr::get($_SERVER, 'SERVER_NAME') !== 'localhost') 
{ 
    // We are live! 
    Kohana::$environment = Kohana::PRODUCTION; 

    // Turn off notices and strict errors 
    error_reporting(E_ALL^E_NOTICE^E_STRICT); 
} 
else 
{ 
    Kohana::$environment = Kohana::DEVELOPMENT; 
    error_reporting(E_ALL | E_STRICT); 
} 

然後你可以設置Kohana::init這樣的:你可以根據的.htaccess(setenvgetenv)/ $_SERVER設置中設置Kohana::$environment變量

Kohana::init(array(
    'base_url' => '/', 
    'caching' => Kohana::$environment === Kohana::PRODUCTION, 
    'profile' => Kohana::$environment !== Kohana::PRODUCTION, 
    'index_file' => FALSE, 
    'errors' => TRUE 
)); 

使您的生產應用程序將啓用緩存和分析功能已禁用。
對於這幾乎是相同的模塊:

if (Kohana::$environment !== Kohana::PRODUCTION) 
{ 
    Kohana::modules(array(
     'unittest' => MODPATH . 'unittest', 
    )); 
} 

AD3。對不起,簡潔 - 不,沒有一個。

+0

我已配置虛擬主機使用完全限定的域名。例如www.niph.com.kh.我可能還想在生產模式下運行本地主機。所以我認爲通過檢查服務器名稱對我來說不是一個好方法。你有其他方法嗎? – 2012-01-11 08:02:08

+1

然後你可以使用setenv和getenv - http://stackoverflow.com/questions/2008123/how-to-use-getenv-in-php-and-setenv-in-a-htaccess-with-a-compiled-php -cgi上 – matino 2012-01-11 08:23:05