🐡
Laravel Duskのブラウザ統合テストでlaravel-adminの認証を通す
環境
- macOSローカルでchromedriver-mac-intelドライバを利用した
- laravelはv8.0系、laravel-adminはv1.8系を使用
セットアップは Laravel Dusk を参照
実行
./vendor/laravel/dusk/bin/chromedriver-mac-intel
Heasless ChromeDriverを起動する
php artisan --env=testing serve
テスト対象のウェブサーバーを起動
php artisan test tests/Browser
テスト実行
<?php
namespace Tests\Browser;
use App\Models\Administrator;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
use Illuminate\Database\Eloquent\Factories\Factory;
class ExampleTest extends DuskTestCase
{
/**
* A basic browser test example.
*
* @return void
*/
public function testBasicExample()
{
$class = config('admin.auth.providers.admin.model');
$admin = Factory::factoryForModel($class)->create();
$this->browse(function (Browser $browser) use ($admin) {
$browser->loginAs($admin, config('admin.auth.guard'))
->visit('/')
->assertSee($admin->name);
});
}
}
ログインしてユーザー名が表示されているかを検証するテストコード
ただこれだけではControllerで呼び出している Admin::user()
は解決されないので以下でセットする
Admin::guard()->setUser($admin);
Discussion