Luc*_*pes 10 php laravel laravel-5 laravel-dusk
我有一个应用程序,我想使用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
Run Code Online (Sandbox Code Playgroud)
.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
Run Code Online (Sandbox Code Playgroud)
用于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');
});
}
}
Run Code Online (Sandbox Code Playgroud)
而不是.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
Run Code Online (Sandbox Code Playgroud)
希望有帮助!
| 归档时间: |
|
| 查看次数: |
1542 次 |
| 最近记录: |