我有申请表,我想使用Laravel Dusk。
我创建了一个名为.env.dusk.local
的文件,其中包含一个用于测试的数据库和一个名为.env
的文件,其中包含我的默认数据库。
我运行了php artisan命令并通过/register
创建了一个用户。
使用相同的电子邮件创建登录测试但使用不同的密码后,这不会有问题,因为在.env.dusk.local
中它将是一个不同的银行,并且不会注册任何用户。
但是当我运行php artisan dusk命令时,它会获取原始.env
中的信息,最终会从我的默认数据库中删除所有记录。
我想知道如何从.env.dusk.local
加载信息并使用我的测试数据库。
.env默认
APP_ENV=local
APP_KEY=base64:K8otIkxJk0rFsZYSEq1hwBuaxQX3QI3Bb7ZmemJRIWg=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost:8000
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_dusk
DB_USERNAME=root
DB_PASSWORD=123456
.env.dusk.local
APP_ENV=local
APP_KEY=base64:K8otIkxJk0rFsZYSEq1hwBuaxQX3QI3Bb7ZmemJRIWg=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost:8000
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_dusk_test
DB_USERNAME=root
DB_PASSWORD=123456
testLogin的Mu函数
namespace Tests\Browser;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Support\Facades\App;
use Tests\DuskTestCase;
class LoginTest extends DuskTestCase
{
use DatabaseMigrations;
/**
* A Dusk test example.
*
* @return void
*/
public function testLogin()
{
$user = factory(\App\User::class)->create(['email' => 'lucas@example.com']);
$this->browse(function ($browser) use ($user) {
$browser->visit('/login')
->type('email', $user->email)
->type('password', 'secret')
->press('Login')
->assertPathIs('/home');
});
}
}
答案 0 :(得分:0)
而不是.env.dusk.local
尝试.env.dusk
除了使用你的mysql数据库之外,我建议使用临时的sqlite数据库,因为它在测试期间被创建和销毁。
你必须在database.php中有一个sqilte配置,它指向你安装中的实际.sqlite文件
所以复制sqlite
中的database.php
配置,然后将其粘贴,将其命名为sqlite_dusk
,然后将数据库的位置设为storage_path('dusk.sqlite')
或类似那。然后在dusk.sqlite
文件夹的根目录中创建一个空白的storage
文件。
然后在.env.dusk
集中:
DB_CONNECTION=sqlite_dusk
希望有所帮助!