12

我有一个应用程序,我想使用 Laravel Dusk。

我创建了一个.env.dusk.local以测试数据库命名的文件和一个以.env我的默认数据库命名的文件。

我运行了 php artisan 命令并通过/register.

在我使用相同的电子邮件但使用不同的密码创建登录测试后,这不会成为问题,因为.env.dusk.local它将是不同的银行并且不会有任何用户注册。

但是当我运行 php artisan Huang 命令时,它会从原始数据库中获取信息.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');
        });
    }
}

这是github中的这个项目

4

1 回答 1

1

而不是.env.dusk.local尝试.env.dusk

另外,我建议不要使用您的 mysql 数据库,而是使用临时 sqlite db,因为它会在测试期间被创建和销毁。

您必须在 database.php 中有一个 sqilte 配置,该配置指向您安装中的实际 .sqlite 文件

所以复制sqlite配置database.php然后粘贴它,sqlite_dusk也许命名它,然后为数据库的位置把它作为storage_path('dusk.sqlite')或类似的东西。dusk.sqlite然后在文件夹的根目录中创建一个空白文件storage

然后在你的.env.dusk集合中:

DB_CONNECTION=sqlite_dusk

希望有帮助!

于 2017-03-29T19:17:07.840 回答