Laravel Dusk에서 로그인 테스트 시 이전 세션이 남아있는 문제 해결하기

Laravel Dusk에서 로그인 테스트를 하고자 할 경우 다음과 같이 코드를 작성 할 수 있다.

 

/** @test */
public function 로그인한다()
{
    $this->browse(function (Browser $browser) {
        $browser->visit(route('login'))
            ->type('email', 'myemail@address.com')
            ->type('password', 'password')
            ->press('Login')
            ->assertRouteIs('home');
    });
}

/** @test */
public function 사용자_입력값이_유효하지_않으면_오류난다()
{
    $this->browse(function (Browser $browser) {
        $browser->visit(route('login'))
            ->type('email', 'test@testdomain.com')
            ->type('password', '123456')
            ->press('Login')
            ->assertSee(trans('auth.failed'));
    });
}

 

첫번째 로그인한다()는 정상적으로 작동하지만, 사용자_입력값이_유효하지_않으면_오류난다() 메서드는 오류가 발생한다. 이전 로그인 세션이 남아있기 때문이다.

이를 해결하기 위해서는 DuskTestCase.php에 다음과 같이 setUp() 메서드를 오버라이딩하고, 쿠키 삭제 코드를 추가한다.

 

protected function setUp()
{
    parent::setUp();
    foreach (static::$browsers as $browser) {
        $browser->driver->manage()->deleteAllCookies();
    }
}

 

Laravel Laravel Dusk Testing