我正试图让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' => '',
],