在测试中创建的文件不会使用Laravel 5.7中的move方法默认上传到公用文件夹

时间:2019-01-28 12:51:11

标签: laravel phpunit laravel-testing

我正在尝试在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依赖进行硬编码的方法?

1 个答案:

答案 0 :(得分:0)

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