Yii单元测试,yii中的常量

时间:2013-09-23 14:44:50

标签: php unit-testing yii constants

我在Yii中编写单元测试,我需要一种方法来理解我处于测试模式(默认范围和..)。我在index-test.php中定义了一个常量。像:

defined('YII_TEST_MODE') or define('YII_TEST_MODE',true);

在我的模型中:

if(YII_TEST_MODE){ ...

但是在我检查时我的代码显示了这个错误:

Use of undefined constant YII_TEST_MODE - assumed 'YII_TEST_MODE'

有没有更好的方法知道你是否处于测试模式?我也使用错误的语法?

2 个答案:

答案 0 :(得分:1)

您希望在代码中使用if(TEST)时非常小心,单元测试的目的是测试将用于特定函数/类的实际代码。

按照您的方式进行操作,只能确保代码在测试模式下工作,而不是在实模式下工作 - 这无法解决问题。

如果您遵循范例,每个功能类应该有自己的单元测试集,那么模拟与其交互的其他类,而不是在测试模式下执行特定操作。

例如,如果您正在测试模型类的功能,并且您不想将数据保存到数据库,则可以使用实际不存储任何数据的数据连接来模拟数据库连接。

话虽这么说,如果你注意到你的配置文件夹,你可能会看到你有一个main.php和一个test.php。您可以做的是定义变量“is_test”,如下所示:

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

你把它放在你的main.php中,并在你的test.php中将它设置为true。然后,您可以查看Yii::app()->params["is_test"]

答案 1 :(得分:0)

我认为index-test.php正在运行单元测试,实际上/protected/tests/bootstrap.php正在初始化测试模式。

但我还是不知道index-test.php是否有用?