2016-10-23 147 views
5

我有一個問題 - 我正在使用Laravel Passport for my api。我需要寫測試。每當我在測試中使用WithoutMiddleware特徵時,都會禁用我使用的Implicit route model binding特徵。每當我不使用這種特質時,我需要直接從我的測試中進行驗證。爲此,我需要通過Passport創建一個API令牌。測試Laravel護照

但是,護照需要在通過artisan passport:install進行測試之前安裝,因爲我的測試使用的是DatabaseTransactionsDatabaseMigrations特徵。當我這樣做時,測試需要大量的時間來運行,我覺得這不是正確的方式。沒有辦法只禁用auth中間件嗎?還是有其他的想法可以解決這個問題?

回答

1

晚會有點晚,但根據這issue這個功能目前不支持,沒有計劃改變這一點很快。

但是,所有Laravel測試類都會繼承withoutMiddleware方法,您可以使用該方法來使用disable middleware on specific methods。不知道這對你有幫助,但只是把它扔在那裏:

public function testBasicExample() 
{ 
    $this->withoutMiddleware(); 

    $this->visit('/') 
     ->see('Laravel 5'); 
} 

您還可以查看是否測試中間件本身通過調用應用程序實例runningUnitTests()方法運行。