在Yii2中使用Codeception進行驗收測試,並且無法訪問我的模型,因爲名稱空間不能用於這些測試。命名空間與Codeception(Yii2)不兼容
我有這個在我的測試/ _bootstrap.php
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/../console/config/main.php');
//
$application = new yii\console\Application($config);
## Added (@vitalik_74)
Yii::setAlias('@tests', dirname(__DIR__));
這在我的控制檯/配置/主
<?php
$params = array_merge(
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-console',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'console\controllers',
'components' => [
'log' => [
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
],
'params' => $params,
];
<?php
return [
'adminEmail' => '[email protected]ample.com',
'supportEmail' => '[email protected]',
'user.passwordResetTokenExpire' => 3600,
];
這是崇拜者的測試之一:
<?php namespace tests\acceptance;
use \AcceptanceTester;
use backend\models\User; ## I have tried writing it with a/at the beggining
class ListUserCest
{
public function _before(AcceptanceTester $I)
{
}
public function _after(AcceptanceTester $I)
{
}
public function init(AcceptanceTester $I)
{
$this->login($I);
if(User::find()->exists())
$I->amGoingTo('List Users having at least one');
else
$I->amGoingTo('List Users having any');
}
...
運行測試時出現此錯誤:
PHP Fatal error: Class 'backend\models\User' not found in /var/www/project/tests/acceptance/ListUserCest.php on line 21 Error: Class 'backend\models\User' not found
請幫幫我吧,我已經嘗試了一切,我知道
編輯
現在我可以使用例如(添加由vitalik_74建議行之後),\ Yii的方法進入測試,但無需Web應用程序配置,只需配置控制檯即可。 我的意思是,我仍然不能使用\ backend \ models \ User,並且我不能訪問Yii :: $ app->用戶狀態(例如檢查用戶是否已登錄)。
用戶模型只是一個普通的ActiveRecord模型,包含他的tableName,rules,attributeLabels以及一些像getProfile()這樣的關係方法。 它的工作原理進行的測試
<?php
namespace backend\models;
use common\helpers\MathHelper;
use backend\models\AntropometricData;
use Yii;
class User extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'user';
}
...
請張貼後端\型號\ User類 – scaisEdge
試試這個。在文件末尾添加'_bootstrap.php'這個 - 'Yii :: setAlias('@ tests',dirname(__ DIR __));' –
請將後端\ models \ User類放入不是ListUserCest類 – scaisEdge