問題タブ [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.

0 投票する
3 に答える
1386 参照

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 スレッドで提案されている別の回避策です。