我正在使用ZF2 + Doctrine2 + PHPUNIT,在设置Phpunit时,它适用于基本测试,但是当我尝试运行调用Doctrine2的测试时,我得到:
PDOException: SQLSTATE[HY000] [1045] Access denied for user 'username'@'localhost' (using password: YES)
但是,我从未指定“username”或“localhost”,也没有指定任何密码。事实上,我的应用程序运行完全正常,我配置完全不同的设置。
那么PHPUnit在哪里获取这些设置以及如何解决它?
我的global.php:
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => '127.0.0.1',
'port' => '3306',
'user' => 'sbapp',
'password' => 'myp@ss',
'dbname' => 'root'
)
)
),
测试:
class ApplicationControllerTest extends AbstractHttpControllerTestCase
{
protected $traceError = true;
public function setUp()
{
$this->setApplicationConfig(
include '../../../config/application.config.php'
);
parent::setUp();
}
public function testAuthActionCanBeAccessed()
{
$postData = new \stdClass();
$postData->username = "someAppUser";
$postData->password = "12345";
$postData = json_decode(json_encode($postData),true);
$this->dispatch('/auth', 'POST', $postData);
$response = $this->getResponse();
$this->assertResponseStatusCode(200);
$this->assertActionName('auth');
}
}
答案 0 :(得分:0)
错误地完成setUp上配置中使用的相对路径会严重影响实体的加载等。所以我正在追逐正确的道路..从root..or或者从供应商......或者从测试文件夹中调用phpunit等。
解决方案:
从项目根目录中调用它,并将路径保留为主项目。