标题说明了一切。我想知道如何使用内存SQLite数据库在Dusk中正确设置一个新的Laravel 5.4项目。
我可以运行测试,但出现错误:"没有这样的表:用户"
- 我创建了一个新的 Laravel 5.4 项目
- 安装了黄昏并添加了服务提供商
- 我正在使用测试身份验证的 laravel 文档中的测试。它已经包含了 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
这是我正在运行的测试(直接来自文档)
<?php
namespace TestsBrowser;
use AppUser;
use TestsDuskTestCase;
use LaravelDuskChrome;
use IlluminateFoundationTestingDatabaseMigrations;
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