В пакете Laravel 5, который я делаю, есть класс FileSelector
, который использует Storage-facade в определенном методе.
public function filterFilesOnDate($files, DateTime $date)
{
return array_filter($files, function($file) use($date){
return Storage::lastModified($file) < $date->getTimeStamp();
});
}
Этот класс принимает путь (к некоторым файлам) и Storage::disk()
в своем конструкторе.
Теперь я пытаюсь написать некоторые базовые модульные тесты для этого конкретного класса, используя Orchestra Testbench.
Функция setUp выглядит так:
protected $fileSelector;
protected $date;
public function setUp()
{
parent::setUp();
$this->date = new DateTime();
$this->fileSelector = new fileSelector('tests/_data/backups', Storage::disk('local'));
}
Неудачный тест:
public function test_if_files_are_filtered_on_date()
{
$files = Storage::allFiles('tests/_data/backups');
$filteredFiles = $this->fileSelector->filterFilesOnDate($files, $this->date);
}
Storage::allFiles('tests/_data/backups')
возвращает никаких файлов вообще. Путь правильный, так как использование File-facade возвращает необходимые файлы, но это несовместимо с filterFilesOnDate()
-методом, так как он использует Storage.
При использовании File-facade возникает следующая ошибка:
League\Flysystem\FileNotFoundException: File not found at tests/_data/backups/ElvisPresley.zip
Я неправильно использую методы хранения в тесте или я наткнулся на ограничение Orchestra/Testbench?