【发布时间】:2021-11-29 09:15:52
【问题描述】:
运行单元测试时出现运行时错误(RuntimeException: Session store not set on request.)
public function testUserCanLoginCorrectCredentials()
{
$this->withoutExceptionHandling();
$user = factory(Users::class)->create();
$response = $this->post('/admin/login', [
'email' => $user->email,
'password' => '123456789',
]);
$response->withSession(['user_id' => $user->id]);
$response->assertRedirect('/admin/dashboard');
$this->assertAuthenticatedAs($user);
}
在控制器中:
$checkUserExist =$this->users->where('email',$request->email)->where('password',$request->password)->first();
if(isset($checkUserExist)){
$user = Auth::guard('users');
$users = Auth::login($checkUserExist);
//Authentication passed...
$request->session()->put('admin_user_id', $checkUserExist->id);
return redirect('admin/dashboard')->with('success', 'You are Logged in !');
} else {
return redirect('/admin')->with('error','Invalid Password, Please Entered Correct Credentials!');
}
运行命令时出现此错误
Time: 1.76 seconds, Memory: 52.00 MB
There was 1 error:
1) Tests\Unit\HostLoginTest::testUserCanLoginCorrectCredentials
RuntimeException: Session store not set on request.
C:\xampp\htdocs\parkk-web\vendor\laravel\framework\src\Illuminate\Http\Request.php:482
C:\xampp\htdocs\parkk-web\app\Http\Controllers\Auth\LoginController.php:107
C:\xampp\htdocs\parkk-web\vendor\laravel\framework\src\Illuminate\Routing\Controller.php:54
C:\xampp\htdocs\parkk-web\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php:45
C:\xampp\htdocs\parkk-web\vendor\laravel\framework\src\Illuminate\Routing\Route.php:219
C:\xampp\htdocs\parkk-web\vendor\laravel\framework\src\Illuminate\Routing\Route.php:176
C:\xampp\htdocs\parkk-web\vendor\laravel\framework\src\Illuminate\Routing\Router.php:680
【问题讨论】:
-
这看起来更像是一个集成测试,而不是一个单元测试。
-
withSession是在请求而不是响应上设置的,即将它放在->post之前。