3

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 を介して接続できないのはなぜですか?

他に役立つヒントはありますか?

4

2 に答える 2

4

phpunit は、MAMP で構成されたものとは異なる php.ini ファイルを使用しますか?

はい、通常、PHP のコマンド ライン バージョンには独自のバージョンのphp.ini. 実行php -iして phpinfo を取得し、そこで使用されている INI を確認します。

于 2013-10-24T23:44:59.077 に答える
1

ローカル マシンで TCP を使用するには、ホスト名として 127.0.0.1 を使用する必要があります。new PDO("mysql:host=127.0.0.1;.....");

于 2013-10-24T16:31:17.320 に答える