试图让Laravel Dusk使用sqlite数据库

时间:2018-03-29 19:00:47

标签: testing phpunit laravel-dusk

我正试图让Laravel Dusk与我试图测试的应用程序很好地配合。

目前我可以写一个测试sqlite数据库但是当我尝试按照指导测试登录表单时,会显示开发数据库中的详细信息。

这是我的测试:

class LoginTest extends DuskTestCase
{

private $user;

use DatabaseMigrations;

public function setUp()
{
    parent::setUp();

    $this->user = factory(User::class)->create(['password' => bcrypt('secret')]);

}

/**
 * A Dusk test example.
 *
 * @return void
 * @throws \Exception
 * @throws \Throwable
 */
public function test_user_can_log_in()
{

    $this->browse(function (Browser $browser) {

        $browser->visit('/login')
            ->assertSee('Members sign in')
            ->type('email', $this->user->email)
            ->type('password', 'secret')
            ->driver->executeScript('window.scrollTo(0, 500);');

        $browser->press('Sign in')
            ->assertPathIs('/home');
    });
}
}

此测试验证失败,因为我刚创建的用户在它正在读取的开发Mysql数据库中不存在。

我能够看到我刚刚在sqlite数据库中创建的用户,并且可以查询该用户是否存在

我做错了什么? Laravel Auth是否会采取措施覆盖连接?

谢谢

修改 这是我的.env文件

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=backend_cms
DB_USERNAME=homestead
DB_PASSWORD=secret

DB_DATABASE_2=members
DB_USERNAME_2=homestead
DB_PASSWORD_2=secret

和我的.env.dusk.local(我也尝试重命名为.env.dusk,但没有变化。

DB_CONNECTION=sqlite_testing

DUSK=true

我读到只有你需要更改的项目应该在那里,所以假设只需要连接?

修改

以下是database.php

中的配置条目
        'sqlite' => [
        'driver' => 'sqlite',
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
    ],
    'sqlite_testing_memory' => [
        'driver' => 'sqlite',
        'database' => ':memory:',
        'prefix' => '',
    ],
    'sqlite_testing' => [
        'driver' => 'sqlite',
        'database' => database_path('database.sqlite'),
        'prefix' => '',
    ],

0 个答案:

没有答案