Beh*_*dsh 3 php testing unit-testing lumen
我正在使用 Lumen 5.5,并且编写了上传文件的简单应用程序。
我写了这样的测试(按照本教程)
<?php
class UploadImageTest extends TestCase
{
Use DatabaseMigrations;
public function testUploadingImageSuccessfully()
{
$this->json('POST', '/images', [
'image' => UploadedFile::fake()->image('image.jpg')
])->assertResponseOk()
}
}
Run Code Online (Sandbox Code Playgroud)
问题是在我的控制器中,$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!";
}
}
Run Code Online (Sandbox Code Playgroud)
我检查了其他问题(例如这个问题)并尝试了给定的解决方案,但没有成功!
我在寻找同一问题的答案时遇到了这个问题,并且不确定它是否相关,因此我提出了一个与我的用例相关的问题。(这里)
解决方案很简单:UploadedFile::fake() 不适用于 JSON,因为它使用 XmlHttpRequest 伪造文件上传(据我所知)。因此,您必须更改您的测试:
public function testUploadingImageSuccessfully()
{
$this->json('POST', '/images', [
'image' => UploadedFile::fake()->image('image.jpg')
])->assertResponseOk()
}
Run Code Online (Sandbox Code Playgroud)
对此:
public function testUploadingImageSuccessfully()
{
$this->call('POST', '/images', [
'image' => UploadedFile::fake()->image('image.jpg')
])->assertResponseOk()
}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
2155 次 |
| 最近记录: |