我开始在 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/