2017-12-20 33 views
0

는 내가 phpunit을 단위/기능 테스트에 새로운 오전 미들웨어는 테스트 컨트롤러 미들웨어는

public function handle(Request $request, Closure $next) 
    { 
     /** 
     * test if user is logged in User 
     */ 
     if(!$this->auth->check()) 
     { 
     /** 
     * if user email register arbitrary User 
     */ 
     if(!$request->has('email')) 
     { 
      return back() 
       ->with('error', "Please submit an email address!"); 
     } 
     $user = $this->registerUser($request->input('email')); 
     /** 
     * [$user register a new user and set session] 
     * @var Request 
     */ 
     $request->session()->set('user', $user); 
     } 

     return $next($request); 
    } 

에 대한 다음과 같은 방법은 그래서

public function testHasSession() 
    { 
     $faker = \Faker\Factory::create(); 
     Session::shouldReceive('get') 
     ->once() 
      ->with('user'); 
     $response = $this->middleware->handle(Request::create(route('brokerquotes.request.store'), 'POST', ['email'=> $faker->email]), function ($request) { 
      return 'OK'; 
     }); 
     $this->assertResponseOK(); 
    } 

시작했지만 작동하지 않습니다. 요청 세션이 설정되었고 컨트롤러 메소드가 미들웨어와 바인드 된 각 라우트가 트리거 될 때 호출되는 것을 어떻게 테스트 할 수 있습니까? 사용자 개체가 필드 email을 가지고 있다고 가정 ...

public function testHasSession() 
{ 
    $faker = \Faker\Factory::create(); 
    $email = $faker->email; 
    $this->post(route('brokerquotes.request.store'), ['email'=> $email]); 
    $this->assertResponseOk(); 
    $this->assertEquals($email, session('user')->email); 
} 

:

답변

1

은 당신이 뭔가를 할 수 있습니다.