0

我在 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'

有没有更好的方法告诉 yii 你处于测试模式?而且我是否使用了错误的语法?

4

2 回答 2

1

如果您想在代码中使用 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-24T06:16:05.603 回答
0

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

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

于 2013-09-24T05:43:24.940 回答