5

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

ただし、私のテストではとtraitartisan passport:installを使用しているため、を介してテストする前に Passport をインストールする必要があります。これを行うと、テストの実行に膨大な時間がかかり、正しい方法ではないと感じます。ミドルウェアだけを無効にする方法はありませんか? または、これについて他のアイデアはありますか?DatabaseTransactionsDatabaseMigrationsauth

4

2 に答える 2

2

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

ただし、すべての Laravel テスト クラスはwithoutMiddlewareメソッドを継承しており、これを使用して特定のメソッドでミドルウェアを無効にすることができます。これがあなたに役立つかどうかはわかりませんが、そこに投げるだけです:

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

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

runningUnitTests()Application インスタンスでメソッドを呼び出して、ミドルウェア自体でテストが実行されているかどうかを確認することもできます。

于 2016-12-10T03:42:06.670 に答える