2013-09-23 51 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是好的吗?