定義自己的方法

剛剛提到的我們可以使用 actingAs() 在測試中模擬某個用戶登入

這個方法很常被拿來使用,但每次使用前都要先建立一個 user 並傳入 actingAs(),久而久之,你的測試可能很常重複下面這段程式碼

$user = User::factory()->create();

$this->actingAs($user);

我們可以在 tests/Pest.php 中自己定義一個 login() 方法,並將上面的流程放進去

use App\Models\User;

function login($user = null) {
    return test()->actingAs($user ?? User::factory()->create());
}

之後我們就可以在測試中重複使用剛剛定義的登入方法,貫徹 DRY 原則

test('can view contents', function () {
    login()->get('/contents')->assertStatus(200);
});

This site uses Just the Docs, a documentation theme for Jekyll.