在我正在制作的 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()
-method 不兼容,因为它使用 Storage。
使用File-facade会产生以下错误:
League\Flysystem\FileNotFoundException: File not found at tests/_data/backups/ElvisPresley.zip
我在测试中使用了错误的存储方法还是偶然发现了 Orchestra/Testbench 的限制?