php - 在 Codeception 测试中找不到 Yii2 类

标签 php composer-php yii2 codeception

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

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

例如这个 Controller :

<?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();
    }

}

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

FATAL ERROR. TESTS NOT FINISHED.

Class 'app\controllers\RecipesController' not found

我的 _bootstrap.php 文件包括:

require_once(__DIR__ . '/../../vendor/autoload.php');
require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');

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

最佳答案

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

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

new yii\web\Application(require(__DIR__ . '/../config/test.php'));

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

关于php - 在 Codeception 测试中找不到 Yii2 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29896173/

相关文章:

php - PHP SimpleXML XPath contains()查找此元素引用的其他元素

php - Composer,PSR-4 自动加载迭代

php - 从 yii2 hasmany() 函数获取数据

PHP, Yii2 GridView 过滤关系值

php - 在 MySQLi 准备好的语句中,STMT 代表什么?

php - 如何在mysql中显示连续日期,如果日期不存在于表中

php - 如何获取给定用户和给定主题标签的所有推文?

php - 如何在 Windows 上安装 Laravel 4 软件包

php - 使用自定义存储库和包使用 Composer 设置项目

session - yii2 无法验证您提交的数据