我在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'
有没有更好的方法知道你是否处于测试模式?我也使用错误的语法?
答案 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是否有用?