Hir*_*oki 3 php laravel laravel-dusk laravel-5.5
我一直在尝试在与Laravel Dusk一起测试时使用内存数据库。
这里有一个文件.env.dusk.local,具有以下值。
DB_CONNECTION=sqlite
DB_DATABASE=:memory:
Run Code Online (Sandbox Code Playgroud)
这是浏览器测试文件的片段。
class ViewOrderTest extends DuskTestCase
{
use DatabaseMigrations;
/** @test */
public function user_can_view_their_order()
{
$order = factory(Order::class)->create();
$this->browse(function (Browser $browser) use ($order) {
$browser->visit('/orders/' . $order->id);
$browser->assertSee('Order ABC'); //Order name
});
}
}
Run Code Online (Sandbox Code Playgroud)
当php artisan dusk被执行时,黄昏开始浏览器测试。
但是,Dusk似乎正在访问我的本地数据库,因为测试浏览器上有一个订单名称,该订单名称仅存在于我的本地数据库中,而“订单ABC”预计会显示在浏览器中。
根据文档,Laravel Dusk允许我们设置环境变量。
要强制Dusk在运行测试时使用其自己的环境文件,请在项目的根目录中创建一个.env.dusk。{environment}文件。例如,如果您要从本地环境启动黄昏命令,则应创建一个.env.dusk.local文件。
我不认为Dusk正在访问单独的数据库。
任何建议将被认真考虑。
小智 8
:memory:Laravel黄昏浏览器测试期间,您不能使用数据库。您的开发服务器和黄昏测试在单独的进程上运行。灰尘测试无法访问在开发服务器上运行的进程的内存。
最佳解决方案是创建sqlite文件数据库进行测试。
'sqlite_testing' => [
'driver' => 'sqlite',
'database' => database_path('sqlite.testing.database'),
'prefix' => '',
],
Run Code Online (Sandbox Code Playgroud)
在数据库文件夹中创建sqlite.testing.database文件。
确保在运行测试之前运行开发服务器
php artisan serve --env dusk.local
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2005 次 |
| 最近记录: |