2013-09-23 124 views
0

我在Yii中編寫單元測試,我需要一種方法來理解我處於測試模式(對於默認範圍和..)。我已經在索引中定義了一個常量, test.php的。像:Yii單元測試,yii中的常量

if(YII_TEST_MODE){ ... 

但是當我檢查這個它表明這個錯誤我的代碼:

Use of undefined constant YII_TEST_MODE - assumed 'YII_TEST_MODE' 

有沒有更好的辦法知道告訴

defined('YII_TEST_MODE') or define('YII_TEST_MODE',true); 
在我的模型

你在測試模式?也是我使用錯誤的語法?

回答

1

您希望在代碼中使用if(TEST)時非常小心,單元測試的目的是測試將用於特定函數/類的實際代碼。

這樣做,只能確保代碼在測試模式下工作,而不是在實模式下工作 - 這違背了重點。

如果您遵循每個功能類應該有自己的單元測試集範例,然後模擬其與其交互的其他類,而不是在測試模式下執行特定操作。例如,如果您正在測試模型類的功能,並且不想將數據保存到數據庫,則可以改爲使用實際不存儲任何數據的數據庫連接來模擬數據庫連接。這就是說,如果你注意到你的配置文件夾,你可能會看到你有一個main.php和一個test.php。你可以做的是定義一個變量「is_test」如下:

'params'=>array(
    'is_test'=>false 
) 

你把你的main.php,並在test.php的將其設置爲true。然後你可以檢查Yii::app()->params["is_test"]

+0

非常豐富的答案。 btw你知道index-test.php是什麼嗎? – tinybyte

+0

這是用於功能測試 - 更具體地說,基於硒的測試,以確保正確的HTML輸出,他們還確保不同的單位工作分開正確集成 –

+0

非常感謝你,你知道任何有關這個問題的良好閱讀?我讀過phpunit和yiiframeworks網站。 – tinybyte

0

我錯了,認爲index-test.php正在運行單元測試,實際上/protected/tests/bootstrap.php初始化測試模式。

但我還是不知道index-test.php是好的嗎?