Unit testing Yii:如何在测试数据库上执行db迁移?

Unit testing Yii:如何在测试数据库上执行db迁移?,unit-testing,migration,yii,database-migration,Unit Testing,Migration,Yii,Database Migration,Yii中是否有在测试数据库上执行迁移的命令?AFAIK,否。 但是您可以在config/console.php中更改数据库连接,并在另一个数据库上运行它。是的,您只需更改连接ID以指向testdb。因此,在config/main.php中,您只需添加: 'components'=>... 'testdb'=>array( 'class'=>'CDbConnection', 'connectionString' => 'mysql

Yii中是否有在测试数据库上执行迁移的命令?

AFAIK,否。
但是您可以在config/console.php中更改数据库连接,并在另一个数据库上运行它。

是的,您只需更改连接ID以指向testdb。因此,在config/main.php中,您只需添加:

'components'=>...
    'testdb'=>array(
      'class'=>'CDbConnection',
            'connectionString' => 'mysql:host=localhost;dbname=my_test_db',
            'emulatePrepare' => true,
            'username' => 'myuser',
            'password' => 'mypass',
            'charset' => 'utf8',
        );
...
请注意该数组中的属性

一旦完成,您可以通过写入终端来运行迁移:

protected/yiic migrate --connectionID=testdb

从理论上讲,如果使用codeception,则可以使用

php codeception/bin/yii migrate/up--interactive=0


在tests文件夹中,对于当前的yii2版本,我碰巧使用了

php test/bin/yii migrate

我的数据库配置在
config/test_db.php

中,是否有任何方法将其包含在测试用例的初始化中,以便自动执行?请记住,迁移过程中可能会有使用Yii::app()->db的代码。我花了一些时间来理解为什么对我的测试数据库使用DbAuthmanager组件的迁移失败了。。。既然迁移命令是一个控制台命令,那么添加testdb组件是否应该是config/console.php呢?现在不再是了,请参见Eric的答案。