小编Mat*_*ias的帖子

如何测试使用 Storage Facade 的类?

在我制作的 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();
    });
}
Run Code Online (Sandbox Code Playgroud)

这个类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'));
}
Run Code Online (Sandbox Code Playgroud)

失败的测试是:

public function test_if_files_are_filtered_on_date()
{
    $files = Storage::allFiles('tests/_data/backups');

    $filteredFiles = $this->fileSelector->filterFilesOnDate($files, $this->date);
}
Run Code Online (Sandbox Code Playgroud)

Storage::allFiles('tests/_data/backups')根本不返回任何文件。路径是正确的,因为使用File-facade返回所需的文件,但这与filterFilesOnDate()-method不兼容,因为它使用 Storage。

使用File-facade 会产生以下错误:

League\Flysystem\FileNotFoundException: …
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing orchestra laravel

1
推荐指数
1
解决办法
1918
查看次数

标签 统计

laravel ×1

orchestra ×1

php ×1

phpunit ×1

unit-testing ×1