使用 phpunit.xml、.env.dusk.local 和 sqlite in-memory 数据库设置 Laravel 5.4 和 Dusk
Set up Laravel 5.4 with Dusk using phpunit.xml, .env.dusk.local, and an sqlite in-memory database
标题说明了一切。我想知道如何使用 in-memory SQLite 数据库使用 Dusk 正确设置新的 Laravel 5.4 项目。
我可以 运行 测试,但出现错误:"No such table: users"
- 我创建了一个新的 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
这是我运行ning的测试(直接来自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 创建的数据库,因此无法断言数据库中的任何内容。
标题说明了一切。我想知道如何使用 in-memory SQLite 数据库使用 Dusk 正确设置新的 Laravel 5.4 项目。
我可以 运行 测试,但出现错误:"No such table: users"
- 我创建了一个新的 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
这是我运行ning的测试(直接来自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 创建的数据库,因此无法断言数据库中的任何内容。