Symfony2 で phpunit を使用していくつかの機能テストを実行しようとしています。テストを実行すると、次のエラーが発生します。
PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock)
phpunit が mysql ソケットを見つけられないと仮定していますが、php.ini ファイル (MAMP 内) に設定しています。Web アプリケーションはブラウザーで正常に動作し、データベースへの接続に成功しています。
この設定を phpunit.xml.dist ファイルに追加しようとしましたが、同じ結果が得られました。
<php>
<ini name="mysql.default_socket" value="/Applications/MAMP/tmp/mysql/mysql.sock"/>
<!--<server name="KERNEL_DIR" value="/path/to/your/app/" />-->
</php>
phpunit が使用している php.ini ファイルを確認/変更する方法はありますか?
それが問題でなければ、振り出しに戻りましょう。私が実行したテストは次のとおりです。
class VBMTest extends WebTestCase
{
var $container;
public function setUp()
{
$client = static::createClient();
$client->getKernel()->boot();
$this->container = $client->getContainer();
}
public function testNameNotFound()
{
$form = array('lastname'=>'Jones','sex'=>'F','day'=>'5','month'=>'5','year'=>'2005');
$vbm = $this->container->get('tk.vbm');
$vbm->init($form, 'process_app');
$step = $vbm->getStep();
$this->assertEquals(
'register',
$step
);
}
}
テスト アプリがすべてのパラメーターを読み込んでいない場合に備えて、この行を追加しました。(Symfony2 でのテストは初めてです。)
$client->getKernel()->boot();
config_test.yml は config_dev.yml をインポートするため、データベース設定がテスト構成に含まれない理由がわかりません。
アップデート
ここに記載されているように、phpunitをアンインストールし、Composerを使用して再インストールしようとしました〜Installing PHPUnit on MAMP 2.1.3 (Mountain Lion)。
そこで、bin/phpunit を使用して phpunit コマンドを実行します。
それでも - 結果に変化はありません。「PDO::__construct(): [2002] そのようなファイルまたはディレクトリはありません」というエラーが引き続き表示されます。
アップデートⅡ
以下で述べたように-@Udanの提案に応えて-config_test.ymlファイルの構成設定を変更して、ホストを127.0.0.1に変更しました。
doctrine:
dbal:
driver: pdo_mysql
host: 127.0.0.1
port: 3306
dbname: test_tk
user: test_tk
password: ############
charset: UTF8
テスト用に新しいユーザーと新しいデータベース (test_tk) も追加しました。エラーは変わりましたが、まだアプリケーションをテストできません。
ERROR 1045 (28000): Access denied for user 'test_tk'@'localhost' (using password: YES)
phpmyadmin からのユーザーの権限の概要は次のとおりです。
User: test_tk
Host: %
Type: global
Privileges: All Privileges
Grant: Yes
私のmysqlのインストールで何か厄介なことが起こっています。以前は、コマンド ラインから mysql に接続できました。そして今、私はできません。奇妙なことに、Web アプリは Web ブラウザーを介して問題なく接続します。
元の質問の核心に戻ります。アプリケーションが Web ブラウザーを介してデータベースに正常に接続するのに、phpunit を介して接続できないのはなぜですか?
他に役立つヒントはありますか?