Фейковый диск для тестов в Laravel

Вдогонку к предыдущему посту — пара слов про создание фейковых дисков для тестов.

Как гласит документация, с помощью фасада Storage мы можем легко создать фейковый диск для тестов. Достаточно выполнить код:

Storage::fake($disk_name);

где $disk_name — название диска (если не указать, будет создан фейк для дефолтного диска).

Дальше в доках говорится, что можно тестировать аплоады с помощью класса UploadedFile, и это всё достаточно просто и понятно. Но так как это практически всё, что написано в доках по данному вопросу — может сложиться ошибочное впечатление, что тестировать аплоады — предел наших возможностей с фейковыми дисками.

Что еще следовало бы, на мой взгляд, подчеркнуть, так это то, что фейковый диск — это не какая-то виртуальная конструкция с набором поддельных методов. Это самый настоящий диск, то есть директория, которая появится в storage/framework/testing. Так что с помощью фейкового диска можно осуществлять (то есть тестировать) ровно то же самое, что с помощью обычного. Создавать файлы и директории, обрабатывать файлы с помощью сторонних библиотек (PHPWord, к примеру), удалять, копировать и даже возвращать на скачивание.

Что довольно удобно, так как тесты не смешиваются с рабочими файловыми структурами проекта.

Комментарии