2016-06-26 12 views
1

Ich versuche PHPUnit Test für den Besuch zu laufen ('/') in Laravel 5 aber es funktioniert nicht mit dieser Meldung unter: (meine app läuft in docker Behälter http://www.spiralout.eu/2015/12/dockervel-laravel-development.html)PHPUnit in Laravel Fehler: Exception‘with message 'SQLSTATE [HY000] [2005] Unbekannter MySQL-Server-Host 'mysql'(2)'

class MyTest extends TestCase 
{ 
    /** 
    * A basic test example. 
    * 
    * @return void 
    */ 
    public function testExample() 
    { 
     $this->assertTrue(true); 
    } 


     public function providerAllUrisWithResponseCode() 
    { 
     return [ 
      ['/', 200], 
      ['/thank', 200], 
      ['/non-existing', 404], 
     ]; 
    } 

     public function testDisplayThankYou($value='') 
    { 
     $this->visit('/thankyou') 
     ->see('Thank you!'); 
    }  


     public function testPageControllerGet() 
    { 
     $this->call('GET', '/'); 
    } 
     public function testDisplayWelcome($value='') 
    { 
     $this->visit('/') 
     ->see('Welcome'); 

    } 
} 

und ich bin diesen Fehler.

 $vendor/bin/phpunit 
PHPUnit 4.8.26 by Sebastian Bergmann and contributors. 

...F 

Time: 24.01 seconds, Memory: 16.00MB 

There was 1 failure: 

1) MyTest::testDisplayWelcome 

A request to [http://localhost] failed. Received status code [500]. 

    ..vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithPages.php:196 

    ..vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithPages.php:80 
    ..vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithPages.php:61 
    .../www/tests/ExampleTest.php:16 

    Caused by 
    exception 'PDOException' with message 'SQLSTATE[HY000] [2005] Unknown MySQL server host 'mysql' (2)' 
    in ../vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:55 

Meine behat Funktionen bestanden! . Meine .env * Dateien wie folgt aussehen:

.env 
DB_CONNECTION=mysql 
DB_HOST=mysql 
DB_PORT=3306 
DB_DATABASE=homestead 
DB_USERNAME=homestead 
DB_PASSWORD=secret 

.env.behat 
DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=homestead 
DB_USERNAME=homestead 
DB_PASSWORD=secret 

auch: Wenn ich entfernen oder DB_HOST = 127.0.0.1 in .env.behat ändern und ich laufe Behat es einen Fehler zurückgibt!

Die Linie 50 in connector.php sagt:

public function createConnection($dsn, array $config, array $options) 
    { 
**here it breaks**--> $username = Arr::get($config, 'username'); 

     $password = Arr::get($config, 'password'); 

     try { 
      $pdo = new PDO($dsn, $username, $password, $options); 
     } catch (Exception $e) { 
      $pdo = $this->tryAgainIfCausedByLostConnection(
       $e, $dsn, $username, $password, $options 
      ); 
     } 

     return $pdo; 
    } 

Zum Beispiel, wenn ich DB laufen :: Tabelle ('etwas') -> get(); es funktioniert gut.

Jemand sieht das Problem?

+0

Scheint wie ein Umgebungskonfigurationsproblem, der DB_HOST muss in der Testumgebung auf 'mysql' gesetzt werden. – Devon

+0

Was ist, wenn Ihr DB_HOST in Ihrer .env auf 'localhost' und nicht auf 'mysql' gesetzt ist? – ishadif

+0

@Devon ist meine Testumgebung die gleiche wie die Laravel App. Umgebung? – moonlight

Antwort

1

Unter .env.behat sollten Sie den Hostnamen mysql verwenden. Es ist Link über Docker mit diesem Namen nicht 127.0.0.1.
.env.behat DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret

+0

Ich änderte es und versuchte alle Kombinationen, Sie können sehen, dass ich diese Frage http://stackoverflow.com/questions/38043467/phpunit-testing-fails-only-when-vising-the-root-page-visit-in gestellt habe -laravel? noredirect = 1 # comment63548754_38043467 und ich weiß nicht, was das Problem ist. Wenn Sie es bekommen, bitte helfen. – moonlight

+0

'DB_HOST = mysql' –

Verwandte Themen