2016-10-23 20 views
5

私は問題があります。私は自分のapiにLaravel Passportを使用しています。私はテストを書く必要があります。テストでWithoutMiddlewareの特性を使用すると、私が使用するImplicit route model binding機能が無効になります。私がその特性を使用しないときはいつでも、私は自分のテストから直接認証する必要があります。そのためには、Passport経由でAPIトークンを作成する必要があります。Laravel Passportのテスト

私のテストではDatabaseTransactionsDatabaseMigrationsの特性を使用しているので、パスポートはartisan passport:installでテストする前にインストールする必要があります。私がこれをすると、テストには膨大な時間がかかり、私はそれが正しい方法ではないように感じます。 authミドルウェアだけを無効にする方法はありませんか?これについて他のアイデアや考え方は?

答えて

1

パーティーに少し遅れますが、このissueによれば、この機能は現在サポートされておらず、すぐに変更する予定はありません。

ただし、すべてのLaravelテストクラスはwithoutMiddlewareメソッドを継承します。これはdisable middleware on specific methodsに使用できます。これはあなたに便利ですが、ちょうどそこにそれを投げるかどうかわからない:

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

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

また、アプリケーションのインスタンス上runningUnitTests()メソッドを呼び出すことによってテストがミドルウェア自体の内部で実行されているかどうかを確認することができます。

関連する問題