私が作成している Laravel 5 パッケージには、特定のメソッドでStorage-facadeFileSelector
を使用するクラスがあります。
public function filterFilesOnDate($files, DateTime $date)
{
return array_filter($files, function($file) use($date){
return Storage::lastModified($file) < $date->getTimeStamp();
});
}
このクラスは、(いくつかのファイルへの) パスとそのStorage::disk()
コンストラクターを受け取ります。
現在、Orchestrator 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 を使用するため、 -method と互換性がありません。
File-facadeを使用すると、次のエラーが生成されます。
League\Flysystem\FileNotFoundException: File not found at tests/_data/backups/ElvisPresley.zip
テストで間違ったストレージ メソッドを使用していますか、それとも Orchestra/Testbench の制限に遭遇しましたか?