You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10 Dusk登录测试失败,请求调试帮助

Laravel Dusk登录测试提示用户不存在的调试方法

刚完成Laravel Dusk全新安装,编写登录测试代码如下:

use Laravel\Dusk\Browser;
use App\Models\User;
use Spatie\Permission\Contracts\Role;


beforeEach(function () {
    $this->user = User::factory()->create([
        'email'    => 'blueshoon@blueshoon.net',
        'password' => Hash::make('password'),
    ]);

    $role = app(Role::class)->findOrCreate('User', 'web');

    $this->user->assignRole($role);
});

test('user login', function () {

    $this->browse(function (Browser $browser) {

        $browser->visit('/')
            ->type('email', $this->user->email)
            ->type('password', 'password')
            ->click('button[type="submit"]')
            ->assertPathIs('/dashboard');
    });
});

测试始终提示用户不存在,已创建Dusk专属.env文件和独立数据库。注释掉Dusk测试类中的LazilyRefreshDatabase后,能看到用户已存入数据库,且验证控制器的凭证正确,需要调试该问题的方法。

调试步骤

  • 确认Dusk数据库连接配置
    检查Dusk专属.env文件(如env.dusk.local)中的数据库参数,确保DB_DATABASE、DB_USERNAME等配置和你手动查看的测试数据库完全一致,避免Dusk实际连接了错误的数据库。

  • 验证LazilyRefreshDatabase的执行逻辑
    在beforeEach方法中添加dd(User::pluck('email')),运行测试时查看是否输出了创建的用户邮箱;或者在测试的click操作前添加$browser->pause(10000),让浏览器暂停10秒,期间手动查询测试数据库,确认用户是否存在。

  • 检查密码哈希一致性
    在beforeEach中输出$this->user->password,然后手动对字符串password执行Hash::make('password'),对比两者是否一致;也可以临时修改测试代码,用$browser->type('password', $this->user->password)提交哈希后的密码,测试是否能登录。

  • 核对登录请求参数
    在登录控制器的验证方法中添加Log::info(request()->all()),运行Dusk测试后查看日志,确认请求中的email和password是否和预期一致,排除前端输入框name属性与代码中type()方法参数不匹配的问题(比如输入框name是user_email而非email)。

  • 清空浏览器会话
    在browse闭包开头添加$browser->deleteCookie('laravel_session'),确保每次测试都是全新的会话,避免旧缓存或会话干扰登录验证。

  • 排查Spatie权限包的影响
    暂时注释掉角色分配的代码,测试基础登录流程是否正常;或者在beforeEach中添加dd($this->user->hasRole('User')),确认用户确实被正确分配了角色,排除权限验证导致的登录失败。

  • 生成错误截图与页面信息
    在测试中添加$browser->screenshot('login-failure'),生成失败时的页面截图;或者用$browser->dump()输出页面HTML,查看表单提交后的具体错误提示,定位问题来源。

内容的提问来源于stack exchange,提问作者pandabrand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 04:44:53