为什么单元测试使用 UploadedFile 文件上传模拟文件获取类型为空?
测试代码
public function testUploadImgSuccess()
{
$faker = $this->faker;
$response = $this->actingAs($this->params['user'])->post('/api/learning_plan/learn_photo/upload_img', [
'photo' => UploadedFile::fake()->image(str_random(20) . '.png'),
'learning_plan_id' => $this->params['learningPlan']->id,
]);
$content = json_decode($response->getContent());
$data = $content->data;
//断言返回无错误
$response->assertStatus(200);
//断言返回成功
$this->assertEquals(0, $content->code);
//断言返回创建结果
$this->assertNotEmpty($data);
}
在我的请求的方法中判断文件类型getMimeType() 获取到的始终为空,
下面是我的控制器方法
public function uploadImg(Request $request)
{
$valid = $this->valid($request, [
'img' => 'required|image',
'learning_plan_id' => 'required|string'
]);
if ($valid->getData()->code != 0) {
return $valid;
}
if ($request->file('img')->isValid()) {
//图片保存至storage的学习计划目录下
$fileTypes = ['image/png', 'image/jpg', 'image/jpeg'];
if (in_array($request->file('img')->getMimeType(), $fileTypes)) {
$path = $request->file('img')->store('/image/learning_plan/' . $request->learning_plan_id);
$photo = '/storage/' . $path;
$user_id = \Auth::id();
$learning_plan_id = $request->learning_plan_id;
$publish_status = ParseConfig::get('learn_photo_publish_status_default', '允许发布');
$learnPhoto = LearnPhoto::create(compact('photo', 'user_id', 'learning_plan_id', 'publish_status'));
if ($learnPhoto) {
return $this->success(0, ['data' => $learnPhoto]);
} else {
return $this->failed('101601', '插入数据库失败');
}
} else {
return $this->failed('101602', '文件格式错误');
}
} else {
return $this->failed('101603', '文件无效');
}
}
那位哥/姐帮忙看下试么问题啊
推荐文章: