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

Laravel Livewire注册组件测试提示不存在redirect键错误如何解决

问题原因及修复方案

原因1:验证未通过,未执行到跳转逻辑

你的测试用例中传入的密码是secret,仅6位,但组件的验证规则要求密码min:8,验证失败后直接终止逻辑,不会走到后续的跳转代码,因此没有返回redirect相关数据。

原因2:Livewire跳转写法不规范

在Livewire组件中直接使用return redirect('/')的写法,浏览器端访问时可以正常跳转,但测试时assertRedirect方法无法识别这种全局辅助函数返回的跳转对象,会提示找不到redirect键。

修复步骤

  1. 调整测试用例的密码长度,符合验证规则:
class RegisterTest extends TestCase
{
    use RefreshDatabase;

    /** @test */
    public function can_register()
    {
        Livewire::test('auth.register')
            ->set('name', 'user')
            ->set('email', 'user@outlook.com')
            ->set('password', 'secret123') // 改为8位以上密码
            ->set('password_confirmation', 'secret123')
            ->call('register')
            ->assertRedirect('/');
    }
}
  1. 调整组件内跳转写法,使用Livewire自带的redirect方法:
public function register()
{
    $data = $this->validate([
        'name' => 'required|string',
        'email' => 'required|email',
        'password' => 'required|confirmed|min:8|string'
    ]);

    User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);

    // 去掉return,调用Livewire自带的redirect方法
    $this->redirect('/');
}

修改完成后重新执行测试即可正常通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:36:03