【发布时间】:2019-07-28 07:19:51
【问题描述】:
如果使用 PHPUnit 测试执行的 Controller 中设置 Session 的过程,则会发出错误“Session store not set on request”,并且会失败。
PHP 7.1 幼虫 5.8 PHPunit 7.5
public function auth(Request $request)
{
$email = $request->input('id');
$password = $request->input('password');
// I intend to succeed..
//$Client = App::make('Client');
//$res = $Client->authenticate($email, $password);
$res = true;
if ($res) {
$token = "sampletoken";
$request->session()->put('Authorization', $token);
return redirect()
->intended('/list');
}
return redirect('/login');
}
<?php
namespace Tests\Feature;
use Illuminate\Http\Request;
use App\Http\Controllers\LoginController;
use Tests\TestCase;
use Mockery;
class LoginControllerTest extends TestCase
{
public function testAuth()
{
$request = new Request();
$request->merge([
"id" => "test_id",
"password" => "test_pass"
]);
$controller = new LoginController();
$response = $controller->auth($request);
$this->assertEquals(preg_match('/\/list/', $response->getTargetUrl()), 1);
}
}
1) Tests\Feature\LoginControllerTest::testAuth
RuntimeException: Session store not set on request
请告诉我解决方法。
【问题讨论】:
标签: php phpunit laravel-5.8