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();
}
}
Recent Comments