本站所搜集的资源均来源于网络,仅供学习研究代码使用,请勿商用
本站所有资源均免费下载无需付费。
登录账号后访问“个人中心”点击“我的余额”在右上角签到后即可免费下载
其资源在源站什么样下载就是什么样,并非本站制作发布,代码是否完整、是否有教程及使用说明需自行判断,本站不保证其资源可用。
本站所有资源均免费下载无需付费。
登录账号后访问“个人中心”点击“我的余额”在右上角签到后即可免费下载
其资源在源站什么样下载就是什么样,并非本站制作发布,代码是否完整、是否有教程及使用说明需自行判断,本站不保证其资源可用。
在处理生成文件名的文件上传时,您如何知道文件名是什么,然后在测试中测试它是否存在。
首先在控制器中通过存储调用执行文件上传,该调用会将文件存储到公共磁盘中的文件夹中,如果您不需要指定桌面,则不要使用第二个参数。
$path = $request->file('name')->store(
'files',
'public'
);
//when no disk is required
$path = $request->file('name')->store('files');
现在这个方法将返回$path作为它的返回值。
然后在测试中使用 storage fake 告诉 Laravel 伪造文件上传
Storage::fake('files');
要伪造上传,您可以使用:
UploadedFile::fake()->image('avatar.jpg')
要断言文件存在,您可以检查存储中的文件:
Storage::assertExists('files/avator.jpg');
但是如果文件是动态存储的,您将不知道文件名,在这种情况下,您需要查看测试的响应。响应不是JSON而是测试响应。为了将其转换为 json,请在响应上使用 decodeResponseJson。然后你就可以正常使用json了。
把它们放在一起:
test('can upload file', function () {
Storage::fake('files');
$response = post('api/v1/file', [
'name' => UploadedFile::fake()->image('avatar.jpg'),
])
->assertStatus(201)
->assertSessionHasNoErrors();
$path = $response->decodeResponseJson()['data']['path'];
Storage::assertExists($path);
});
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。