标题说明了一切。我想知道如何使用内存中的SQLite数据库使用Dusk正确设置新的Laravel 5.4项目。

我可以运行测试,但是出现错误:“没有这样的表:用户”

  • 我创建了一个新的Laravel 5.4项目
  • 安装了Dusk并添加了服务提供商
  • 我正在使用laravel docs中的测试身份验证的测试。它已经包含DatabaseMigrations特性
  • 我可以运行测试,第一个可以工作(导航到/login路由),但是第二个尝试登录的地方却失败了。

  • 我添加了一个.env.dusk.local,其中包含
    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
    

    这是我正在运行的测试(直接来自the docs)
    <?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');
            });
        }
    }
    

    我想念什么?

    最佳答案

    您不能

    需要注意的重要一点是,对于这种端到端测试,Dusk将无法控制环境,因为它将打开一个单独的进程。内存中的SQLite仅在Dusk进程下存在,击中应用程序的实时浏览器将不了解Dusk创建的数据库,从而无法在数据库中声明任何内容。

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

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

    关于laravel - 使用phpunit.xml,.env.dusk.local和sqlite内存数据库使用Dusk设置Laravel 5.4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41908118/

    10-11 00:21