【发布时间】:2017-06-13 23:16:50
【问题描述】:
标题说明了一切。我想知道如何使用内存中的 SQLite 数据库正确设置新的 Laravel 5.4 项目和 Dusk。
我可以运行测试,但出现错误:“没有这样的表:用户”
- 我创建了一个新的 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');
});
}
}
我错过了什么?
【问题讨论】:
-
每次测试前需要迁移
-
我已经在使用 DatabaseMigrations 特征了。
-
@Mike 你找到解决方案了吗?使用文件 ('database' => database_path('database.sqlite'), ) 将运行绿色测试,但不会运行内存:/
-
测试在单独的进程中运行,因此不能使用内存数据库运行。唯一的选择是使用专用的 sqlite 数据库作为标准。
-
在
.env.dusk.local可以设置db内存。然后运行php artisan serve --env=.env.dusk.local。 (可选:启动 Chrome/Selenium)。最后运行php artisan dusk。
标签: laravel sqlite phpunit laravel-5.4 laravel-dusk