我正在用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'有什么更好的方法来知道你在测试模式下吗?我是不是也用错了语法?
发布于 2013-09-24 06:16:05
在代码中使用if( test )时要非常小心,单元测试的目的是测试将用于特定函数/类的实际代码。
这样做只会确保代码在测试模式下工作,而不是在实际模式下工作--这违背了重点。
如果您遵循每个功能类应该有自己的单元测试集的范式,那么就模拟它与之交互的其他类,而不是在测试模式下执行特定的操作。
例如,如果您正在测试模型类的功能,并且不希望将数据保存到数据库中,则可以使用不实际存储任何数据的连接来模拟数据库连接。
尽管如此,如果您注意到您的配置文件夹,您可能会看到您有一个main.php和一个test.php。您可以做的是定义一个变量"is_test“如下:
'params'=>array(
'is_test'=>false
)您将其放入您的main.php中,在您的test.php中将其设置为true。然后您可以检查Yii::app()->params["is_test"]
发布于 2013-09-24 05:43:24
我认为index-test.php正在运行单元测试是错误的,实际上/protected/ test /bootstrap.php初始化测试模式。
但我还是不知道index-test.php对什么有好处?
https://stackoverflow.com/questions/18962266
复制相似问题