Laravel测试报错:actingAs()传参异常,求助登录会员创建职位测试
解决Laravel测试中
actingAs()参数错误的问题 Hey, let's fix that actingAs() error you're hitting in your Laravel test. Here's what's going on and how to resolve it:
问题根源
Laravel的actingAs()方法要求传入的用户实例必须实现Illuminate\Contracts\Auth\Authenticatable接口。而你当前的M_member模型只继承了基础的Model类,并没有满足这个接口要求——这就是报错的核心原因。
修复步骤
1. 更新M_member模型的继承关系
最简单的修复方式是让M_member继承Laravel内置的Authenticatable类(而非普通的Model),因为这个类已经实现了所有认证所需的接口和方法:
<?php namespace App\Models; // 替换原有的Model引入为Authenticatable use Illuminate\Foundation\Auth\User as Authenticatable; class M_member extends Authenticatable { // 保留你模型中原有的代码(比如$fillable、关联关系等) // 可选:如果你的会员表使用非默认主键(比如`member_id`),添加以下配置: // protected $primaryKey = 'member_id'; // 可选:如果你的表没有`remember_token`字段,添加以下配置避免报错: // public $rememberTokenName = false; }
2. 确认认证配置(按需操作)
如果M_member是你应用的主要认证用户模型,需要更新config/auth.php文件,将认证提供者指向它:
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\M_member::class, ], ],
3. 重新运行测试
你原本的测试逻辑是没问题的——一旦模型实现了所需接口,actingAs($member)就能正确识别这个实例为认证用户,测试代码可以直接复用:
/** @test */ public function member_can_create_a_job(){ $member = factory('App\Models\M_member')->create(); $this->actingAs($member); $job = factory('App\Models\M_lowker')->make(); $this->post('/lowker/tambah-lowker', $job->toArray())->assertRedirect('/lowker/tambah-lowker'); }
这样就能解决参数错误问题,让测试顺利运行了!
内容的提问来源于stack exchange,提问作者Iqro
相关产品推荐
相关产品推荐

