首页 > 解决方案 > 带有 laravel Dusk 的测试用例显示错误“users_email_unique”

问题描述

我收到如下截图所示的错误

在此处输入图像描述

请帮助我,我正在尝试,为此我花了太多时间,但仍然没有运气。

我正在使用 laravel 官方黄昏包进行前端网络测试。当我运行登录测试用例时,它显示错误“users_email_unique”,如上图所示。我正在使用use DatabaseTransactions,但它没有恢复我的最后一笔交易。为此,我也在使用测试数据库。这是我的代码:

<?php

namespace Tests\Browser;

use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
use App\User;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class LoginTest extends DuskTestCase
{
    use DatabaseTransactions;
    /**
     * A Dusk test example.
     *
     * @return void
     */

    public function test_I_can_login_successfully()
    {
        $user = factory(User::class)->create([
            'email' => 'login@gmail.com',
            'password' => bcrypt('password'),
        ]);

        $this->browse(function ($browser) use ($user) {
            $browser->visit('/')
                ->type('email', 'login@gmail.com')
                ->type('password', 'password')
                ->press('Login')
                ->assertSee($user->name);
        });
    }
}

标签: laravelunit-testinglaravel-6laravel-dusk

解决方案


对于 Dusk,您不能使用 use DatabaseTransactions。你需要DatabaseMigrations改用。当您更新特征时,您应该摆脱错误。

您在文档中有示例 Dusk 测试,它看起来像这样:

<?php

namespace Tests\Browser;

use App\User;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Chrome;
use Tests\DuskTestCase;

class ExampleTest extends DuskTestCase
{
    use DatabaseMigrations;

    /**
     * A basic browser test example.
     *
     * @return void
     */
    public function testBasicExample()
    {
        $user = factory(User::class)->create([
            'email' => 'taylor@laravel.com',
        ]);

        $this->browse(function ($browser) use ($user) {
            $browser->visit('/login')
                    ->type('email', $user->email)
                    ->type('password', 'password')
                    ->press('Login')
                    ->assertPathIs('/home');
        });
    }
}

如您所见,它也在使用 DatabaseMigrations 特征。


推荐阅读