Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

При использование функциональных тестов удаляются файлы при загрузке (laravel)


(Artem Prokopenko) #1

Обнаружил интересную вещь при тестирование контроллера отвечающего за прием картинок с формы. Не уверен, что есть разница, но уточню, что я работаю с Laravel 4.

Так вот. Для тестирования я использую следующую конструкцию.
$file = new UploadedFile(codecept_data_dir(‘avatar.gif’), ‘avatar.gif’);
$I->sendPOST(‘http://project.dev/admin/logoUpload’, array(), array(‘file’ => $file));

Если проходить тест через Acceptance suite, то эта конструкция сформирует полноценны http запрос и отправит на сервер. Т.е. файл поместиться в tmp и от туда приложением будет перемещен в необходимую директорию.

Но в случае использования Functional suite http запроса не будет и в контроллер будет передан объет UploadedFile, который помнит, где храниться оригинал файла. И знаете, что он сделает, когда приложение, думая, что файл лежит в tmp, попытается перенести его в регулярную директорию? Правильно - он перенесет оригинал файла, тем самым сделав его недоступным для повторного тестирования.

У меня есть несколько идей о том, как можно обойти эту проблему костылями (которые скорей всего потом мне встанут боком), но уверен, что я не первый с этим сталкиваюсь и есть безопасные и элегантные решения этой проблемы.


(Artem Prokopenko) #2

На данный момент я создал каталог _data/temp, куда с помощью метода _before подгружаю копирую картинки, если их там нет. Соотвественно тесты работают с картинками из temp, а не с оригиналами.