Тест скачивания файла в Laravel

Допустим, у нас есть вот такой код (в контроллере, например для пути /documents/download):

return response()->download(
    $path, 
    'myfile.docx', 
    ['content-type' => 'application/msword']);

То есть выдача файла, находящегося в $path для скачивания под именем myfile.docx.

Протестировать, что файл отдается корректно, можно вот так:

use Tests\TestCase;

class DocServiceTest extends TestCase {

    /**
     * @test
     */
    public function user_can_download_document() {
        // обращаемся к пути, который отдает файл
        $result = $this->get('/documents/download');

        // проверяем http ok
        $result->assertStatus(200);

        // проверяем mime type
        $result->assertHeader('content-type', 'application/msword');

        // проверяем наличие аттача с заданным именем файла
        $result->assertHeader('content-disposition', 'attachment; filename="myfile.docx"');
    }
}

Комментарии