LaravelのDuskテストでログインテストでセッションが生きててハマったお話
複数のテストを1ファイルに書いている場合、そのファイル中はセッションが生きているっぽい
なので、setUp とかで logout() してやらないといけないっぽい
以下の例では admin
という guard からログアウトしています
なお、なぜか tearDown で動かなかった(未検証)
<?php class LoginTest extends DuskTestCase { use DatabaseMigrations; protected function setUp() { parent::setUp(); try { $this->browse(function (Browser $browser) { $browser->logout('admin'); }); } catch (\Throwable $e) { echo $e->getMessage() . "\n"; } } // ログインするテスト /** * * @return void * @throws \Throwable */ public function testRedirectAfterLogin() { $admin = factory(Admin::class)->create(); $this->browse(function (Browser $browser) use ($admin) { $browser->visit('/admin/articles') ->assertPathIs('/admin/login') // ここが動かなかった! ->type('email', $admin->email) ->type('password', 'secret') ->click('@login') ->assertPathIs('/admin/articles'); }); } }