为什么单元测试使用 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', '文件无效');
        }

    }

那位哥/姐帮忙看下试么问题啊

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1

我也遇到这个问题了 获取不到文件的任何内容

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!