Yii2单元测试::访问被拒绝用户' @' localhost' (使用密码:否)

时间:2016-09-03 06:14:51

标签: yii2 codeception

在单元测试中创建自动化测试时。我收到了这个错误。

我的代码在单元测试中

 function testSavingUser()
{
    $user = new User();
    $user->auth_key='value';
    $user->password_hash='value';
    $user->password_reset_token='value';
    $user->email='value';
    $user->status=1;
    $user->first_name='value';
    $user->last_name='value';
    $user->image='value';
    $user->role_id=1;
    $user->created_date='2016-08-31 16:57:10';
    $user->updated_date='2016-08-31 16:57:10';

    $user->save();
    $this->assertEquals('Miles Davis', $user->getFullName());
    $this->tester->seeInDatabase('users', ['name' => 'Miles', 'surname' => 'Davis']);
}

这是我的配置文件

    $config =  yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/web.php'),
    //require(__DIR__ . '/main-local.php'),
    [
        'id' => 'app-tests',
        'components' => [
            'db' => [
                'class' => 'yii\db\Connection',
                'dsn' => 'mysql:host=' . getenv('DB_HOST'). ';dbname=' . getenv('DB_NAME'),
                'username' => getenv('DB_USER'),
                'password' => getenv('DB_PASSWORD'),
                'charset' => 'utf8',
            ],
        ]        
    ]
);
return $config;

在functional.suite.yml

class_name: FunctionalTester
    modules:
      enabled:
         - Yii2:
             configFile: 'config/test.php'

当尝试使用codecept运行执行我的测试时,它会显示如下错误

  

[yii \ db \ Exception] SQLSTATE [28000] [1045]拒绝用户访问' @' localhost' (使用密码:否)

1 个答案:

答案 0 :(得分:1)

可能的错误原因:

  1. 提供的凭据不正确或彼此混合。准确检查错别字等。
  2. 使用getenv调用无法正确访问或提取环境变量。检查键是否正确并确保返回正确的值(您可以使用var_dump之类的内容。)
  3. 用户无权访问此数据库。您可以在相关的question
  4. 中查看如何设置它