【问题标题】:File created in testing is not uploading to public folder as default using move method in Laravel 5.7在测试中创建的文件默认不会使用 Laravel 5.7 中的 move 方法上传到公用文件夹
【发布时间】:2019-06-21 11:34:07
【问题描述】:

我正在尝试在 laravel 5.7 中创建一个测试,该测试涉及创建一个假图像对象,该对象进一步被服务使用,该服务将其移动到公用文件夹中的所需目录。如果我通过浏览器上传文件,我的服务可以正常工作,但如果我通过测试运行,它会在根目录中创建一个文件夹并在那里上传图像。

服务代码:

$data['icon'] = time().'.'.$file->getClientOriginalExtension();
$file->move('uploads/avatar/icon', $data['icon']);

测试文件代码:

$file = UploadedFile::fake()->image('random.jpg');

现在如果我在服务代码中指定路径,它会给出想要的结果

$data['icon'] = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('uploads/avatar/icon'), $data['icon']);

有没有办法不硬编码 public_path 依赖项?

【问题讨论】:

    标签: laravel phpunit laravel-testing


    【解决方案1】:

    似乎您正在使用不同的文件系统磁盘,该磁盘在您的测试环境中具有不同的根路径。我建议设置一个.env.testing 文件。

    【讨论】:

    • 我已经在使用 .env.testing 但我需要进行哪些更改来测试上传光盘
    • 检查您在测试环境中实际使用的磁盘以及该磁盘的根路径。如果它没有设置为public,那可能就是问题所在。确保FILESYSTEM_DRIVER 在.env.testing 中设置正确,并且在运行时没有被更改。
    • 我试过了,但没用。测试环境和实际环境都使用本地驱动程序
    • $file->move() 实际上在做什么?好像和Storage::move();不一样@
    • 两者都用于移动文件
    猜你喜欢
    • 2019-07-05
    • 2019-01-27
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2017-11-18
    • 1970-01-01
    相关资源
    最近更新 更多