使用启用 Yii1 的模块进行代码接收

Codeception with Yii1 enabled module

我正在使用 codeception 2.2.5 a 和 Yii 1.1.4 我有 Yii1 模块的问题。我已经为功能和单元测试配置了它

这是functional.suite.yml

class_name: FunctionalTester
modules:
    enabled:
        - Yii1:
            appPath: 'www/test.php'
            url: 'http://localhost/test.php'
            part: init
        - PhpBrowser:
            url: 'http://localhost/index-test.php'
        - \Helper\Functional
coverage:
    enabled: true
    remote: false

这是unit.suite.yml

class_name: UnitTester
modules:
    enabled:
        - Asserts
        - Yii1:
            appPath: 'www/test.php'
            url: 'http://localhost/test.php'
        - \Helper\Unit

当我 运行 分别进行测试时,一切正常。例如

php codecept.phar run functional --xml --html
php codecept.phar run unit --xml --html

当我运行大家一起

php codecept.phar run --xml --html

它 运行 功能正常,没有与 Yii1 模块相关的问题。在单位上它带来

[Codeception\Exception\ModuleConfigException]                     
  Yii1 module is not configured!                                    

  Couldn't load application config file www/test.php                
  Please provide application bootstrap file configured for testing

运行 的主要目标是代码覆盖率。

这是我的问题的答案:

我创建了一个单独的模块 Yii1Ext(Yii1Ext.php) 扩展到 Yii1 模块:

namespace Helper;

use Codeception\Module\Yii1;

class Yii1Ext extends Yii1
{
    public function _initialize()
    {
        $this->config['appPath'] = FRONTEND.'/'.$this->config['appPath'];
        parent::_initialize();
    }
}

并且在配置文件中启用 Yii1Ext 模块而不是 Yii1 模块

class_name: FunctionalTester
modules:
    enabled:
        - \Helper\Yii1Ext:
            appPath: 'www/test.php'
            url: 'http://localhost/test.php'
            part: init
        - PhpBrowser:
            url: 'http://localhost/'

注意:确保Yii中所有定义的变量都由语句定义

defined('ROOT_DIR') or define('ROOT_DIR', realpath(__DIR__ . '/../'));