【问题标题】:Unit testing in laravel using filesystems使用文件系统在 laravel 中进行单元测试
【发布时间】:2021-06-26 03:30:44
【问题描述】:

我正在使用文件系统配置进行单元测试。我想将我的文件系统磁盘映射到一个测试目录,我将在其中放置我的文件(JSON、Excel、txt)以供应用程序用于测试目的。我不想使用假目录,因为我需要将文件放在“导入”位置。

文件系统.php:

'disks' => [
    'import' => [
        'driver' => 'local',
        'root' => '/import/clientname',
        'visibility' => 'private'
    ],
];

在应用程序中,这是我要测试的功能:

public function importFile(){
    $filesystem = Storage::disk('import');
    
    ...
}

我想的解决方案是使用这个位置进行测试:

有没有办法实现这个解决方案?

【问题讨论】:

    标签: laravel unit-testing phpunit filesystems


    【解决方案1】:

    是的,例如,您可以使用每个磁盘上传文件,然后断言该目录中是否存在文件。

    表单上传图片单元测试示例:

    public function testStorage()
    {
        $file = UploadedFile::fake()->image('File10.png');
        $response = $this->post(route("save.image"), [
            'file' => $file,
        ]);
        $response
            ->assertStatus(200)
            ->assertSessionHasNoErrors();
        Storage::disk('local')->assertExists("/images/" . $file->name);
    }
    

    【讨论】:

    • 您好,感谢您的回答。是否有任何设置可以让它走这条路?
    • @user3910487 我编辑了我的答案,希望对您有所帮助
    • 最主要的是在使用UploadedFile的时候记得使用fake()
    猜你喜欢
    • 2011-01-15
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 2018-03-04
    • 2020-10-22
    相关资源
    最近更新 更多