在 Codeception 测试中找不到 Yii2 类

Ale*_*eve 3 php composer-php yii2 codeception

我开始在 Yii2 中使用 Codeception 进行单元测试。太好了 Yii2 现在完全拥抱它,这是我升级的主要原因!

我很难让 Codeception 找到课程。我编写的控制器类,例如,这些类通过在 Yii2 应用程序中自动加载可以很好地加载。

例如这个控制器:

<?php

class RecipeControllerTest extends \Codeception\TestCase\Test
{
   /**
    * @var \UnitTester
    */
    protected $tester;

    protected function _before()
    {
    }

    protected function _after()
    {
    }

    // tests
    public function testMe()
    {
      echo \app\controllers\RecipesController::getallrecipes();
    }

}
Run Code Online (Sandbox Code Playgroud)

当我codeception run unit在他的输出中在控制台中执行时的结果:

致命错误。测试未完成。

app\controllers\RecipesController未找到类 ' '

我的_bootstrap.php文件包括:

require_once(__DIR__ . '/../../vendor/autoload.php');
require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
Run Code Online (Sandbox Code Playgroud)

所以我确定我做错了什么,但我一无所知。

hij*_*ian 6

我通过在全局 Codeception 引导文件中显式创建 Yii 应用程序解决了这个问题。

也就是在里面tests/_bootstrap.php,追加了下面这行代码:

new yii\web\Application(require(__DIR__ . '/../config/test.php'));
Run Code Online (Sandbox Code Playgroud)

很可能是因为只有在Application构造函数中,自动加载器才真正附加到运行时。