gpt4 book ai didi

php - 在 lumen 5.5 中测试文件上传

转载 作者:行者123 更新时间:2023-11-28 19:57:47 26 4
gpt4 key购买 nike

我使用的是 Lumen 5.5,我编写了简单的上传文件的应用程序。

我这样写测试(遵循 this 教程)

<?php

class UploadImageTest extends TestCase
{

Use DatabaseMigrations;

public function testUploadingImageSuccessfully()
{
$this->json('POST', '/images', [
'image' => UploadedFile::fake()->image('image.jpg')
])->assertResponseOk()
}

}

问题是在我的 Controller 中,$request->file('image') 返回 null。

<?php

use Illuminate\Http\Request;

class UploadController extends Controller
{

public function upload(Request $request)
{
if ($request->file('image')) { // always return null
return "File is uploaded!";
}

return "File is not uploaded!";
}

}

我检查了其他问题(如 this one)并尝试了给定的解决方案,但没有成功!

最佳答案

我在搜索同一问题的答案时遇到了这个问题,但不确定它是否相关,所以我提出了一个与我的用例相关的问题。 (Here)

解决方案很简单:UploadedFile::fake() 不适用于 JSON,因为它使用 XmlHttpRequest 伪造文件上传(据我所知)。因此,您必须从此更改您的测试:

public function testUploadingImageSuccessfully()
{
$this->json('POST', '/images', [
'image' => UploadedFile::fake()->image('image.jpg')
])->assertResponseOk()
}

为此:

public function testUploadingImageSuccessfully()
{
$this->call('POST', '/images', [
'image' => UploadedFile::fake()->image('image.jpg')
])->assertResponseOk()
}

希望对您有所帮助!

关于php - 在 lumen 5.5 中测试文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46408641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com