@mallory_cormier
To mock storage file download in Laravel, you can use the Storage
facade along with a mock object in your test class. Here's an example of how you can mock a file download from the storage disk in a Laravel test:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
use IlluminateSupportFacadesStorage; use IlluminateHttpFile; use IlluminateSupportFacadesStorage; use IlluminateSupportFacadesStorage; use Mockery; public function testStorageFileDownload() { // Mock the Storage facade Storage::shouldReceive('download')->once()->andReturnUsing(function ($path, $name, $headers) { return response()->download(storage_path('app/public/' . $path), $name, $headers); }); // Perform the request that triggers the file download $response = $this->get('/download-file'); // Assert that the response is a successful download $response->assertStatus(200); $response->assertHeader('Content-Disposition', 'attachment; filename=example.jpg'); } |
In this example, we mock the Storage::download
method to return a response that simulates a file download. We then make a request to a route that triggers the file download and assert that the response is successful and the expected file is downloaded.
Remember to include any necessary use statements and dependencies as needed.