Тестирование Phpunit не может получить файл для загрузки на s3 - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь проверить использование php-модуля в laravel для загрузки файла в s3 Bucket.Я использую faker для создания изображения.

Тест запускается и вызывает контроллер, но проблема в том, что когда он достигает уровня контроллера, он просто не может найти файл для получения изображения.Я думал, что имя 'profilePicture' является проблемой, но я так не думаю.

Мой тестовый код phpunit выглядит следующим образом

public function testSuccesfulPictureUpload()
    {
        /** @var User $admin */
        $admin = factory(User::class)->state('verified')->create();

        $response = $this->actingAs($admin, 'admin')
            ->postJson(route('internal.admin.image',[
                'profilePicture' => new UploadedFile($this->faker->image($dir = '/tmp', $width = 640, $height = 480),'random.jpg',null,null,null,null)
                ]));

        $response->assertStatus(Response::HTTP_OK);
    }

И мой контроллер выглядит следующим образом.

public function storeImage(Request $request){

        if($request->hasFile('profilePicture')) {

            //get filename with extension
            $filenamewithextension = $request->file('profilePicture')->getClientOriginalName();

            //get filename without extension
            $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);

            //get file extension
            $extension = $request->file('profilePicture')->getClientOriginalExtension();

            //filename to store
            $filenametostore = $filename.'_'.time().'.'.$extension;

            //Add bucket name
            config(['disks.s3.bucket' => 'my-s3-bucket']);

            //Upload File to s3
            Storage::disk('s3')->put($filenametostore, fopen($request->file('profilePicture'), 'r+'), 'public');

            //Store $filenametostore in the database
        }

        return response()->json(['message' => 'Error, could not find file'], 404);
    }

Я никогда не смогу дойти до конца, поскольку вызов всегда заканчивается на if($request->hasFile) Так что я не уверен, почему он не может найти файл с помощью модульного тестирования php.Я просматривал приведенный ниже стек поверх потоковой страницы Как проверить загрузку файлов с помощью laravel и phpunit?

Но это все равно не помогло мне.

...