2017-01-28 1 views
6

Der Titel sagt alles. Ich würde gerne wissen, wie man ein neues Laravel 5.4-Projekt mit Dusk unter Verwendung einer In-Memory-SQLite-Datenbank richtig einrichtet.Richten Sie Laravel 5.4 mit Dusk mit phpunit.xml, .env.dusk.local und einer SQLite In-Memory-Datenbank ein

kann ich die Tests laufen, aber ich erhalte eine Fehlermeldung: "Keine solche Tabelle: Benutzer"

  • ich ein neues Laravel 5.4 Projekt angelegt haben
  • installiert Dusk und hinzugefügt, um den Service Provider
  • Ich verwende den Test von , der die Authentifizierung testet. Es enthält bereits die DatabaseMigrations-Eigenschaft
  • Ich kann die Tests ausführen, und der erste funktioniert (Navigieren zur/Login-Route), aber die zweite, wo es versuchte, sich anzumelden schlägt fehl.

Ich habe eine .env.dusk.local hinzugefügt, die

APP_ENV=local 
APP_KEY=RANDOM_STRING_HERE 
APP_DEBUG=true 
APP_LOG_LEVEL=debug 
APP_URL=http://laravel54.dev 

DB_CONNECTION=sqlite 
DB_DATABASE=':memory:' // I've also tried just :memory: and also adding these details to the config/database.php file but to no avail 

enthält Dies ist der Test I (direkt von the docs) leite

<?php 

namespace Tests\Browser; 

use App\User; 
use Tests\DuskTestCase; 
use Laravel\Dusk\Chrome; 
use Illuminate\Foundation\Testing\DatabaseMigrations; 

class LoginTest extends DuskTestCase 
{ 
    use DatabaseMigrations; 

    public function test_login_page() 
    { 
     $user = factory(User::class)->create(); 

     $this->browse(function ($browser) use ($user) { 
      $browser->visit('/login') 
       ->type('email', $user->email) 
       ->type('password', 'secret') 
       ->press('Sign in') 
       ->assertPathIs('/home'); 
     }); 
    } 
} 

Was bin ich?

+0

Sie vor jedem Test migrieren müssen – Kyslik

+2

Ich bin schon das DatabaseMigrations Merkmal verwenden. – Mike

+0

@Mike Haben Sie schon eine Lösung gefunden? Die Verwendung einer Datei ('database' => database_path ('database.sqlite')) führt die Tests grün, aber nicht Memory:/ – Mike

Antwort

2

Sie können nicht.

Die wichtige Sache zu beachten ist, dass für diese Art von End-to-End-Test Dusk nicht in der Lage sein wird, die Umwelt zu kontrollieren, da es einen separaten Prozess öffnen wird. Ein In-Memory-SQLite würde nur im Dusk-Prozess existieren und der echte Browser, der die Anwendung trifft, hätte keine Kenntnis von der von Dusk erstellten Datenbank, was es unmöglich macht, etwas in der Datenbank zu behaupten.

https://github.com/laravel/dusk/issues/110

https://github.com/laravel/dusk/issues/73

Verwandte Themen