問題タブ [flysystem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
laravel - Storage::put() と Storage::temporaryUrl() の両方を使用する Laravel でルートをテストするには?
Laravel 7 には、ファイルを S3 ディスクに保存し、一時的な URL を返すルートがあります。コードを簡略化すると、次のようになります。
そのルートのテストを書きたいと思います。これは通常、Laravel では簡単です。でストレージをモックしStorage::fake('s3')
、でファイルの作成をアサートしますStorage::disk('s3')->assertExists('image.jpg')
。
フェイクストレージは対応しておりませんStorage::temporaryUrl()
。そのメソッドを使用しようとすると、次のエラーがスローされます。
このドライバーは、一時 URL の作成をサポートしていません。
一般的な回避策は、Laravel の低レベルのモック API を次のように使用することです。
この解決策は、LaraCasts スレッドとGitHub の問題で推奨されており、Storage::fake()
.
その 2 つのアプローチを組み合わせて、両方を行うルートをテストする方法はありますか?
再実装は避けたいStorage::fake()
。Storage::temporaryUrl()
また、環境がテスト中の場合は呼び出さないというチェックを本番コードに追加することは避けたいと思います。後者は、前述の LaraCasts スレッドで提案されている別の回避策です。