Тестирование загрузки S3 с помощью Laravel Medialibrary «В текущем запросе нет файла в ключе с именем»Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Тестирование загрузки S3 с помощью Laravel Medialibrary «В текущем запросе нет файла в ключе с именем»

Сообщение Anonymous »

Я пишу функциональный тест для простой загрузки фотографий на S3 с помощью Laravel Medialibrary.

Это тест:

Код: Выделить всё

/** @test */
public function a_user_can_upload_a_photo()
{
$this->withoutExceptionHandling();

Storage::fake('s3');

$user = factory(User::class)->create();

$this->signIn($user);

$this->post( route('users.update.photo', [
$user,
'photo' => UploadedFile::fake()->image('photo.jpeg', 500, 500)->size(1000),
]));

$this->assertEquals(1, Media::all()->count());

Storage::disk('s3')->assertExists('photo.jpeg');
}
и это соответствующая часть метода контроллера, обрабатывающего загрузку:

Код: Выделить всё

public function uploadPhoto(User $user, Request $request)
{

// ...

try {
$user->addMediaFromRequest('photo')
->preservingOriginal()
->toMediaCollection('user-photo');

} catch (\Exception $e) {
dd($e);
Log::debug('User photo upload: ' . $e);

}

return redirect(route('users.edit.profile', $user));
}
Ошибка, обнаруженная с помощью dd($e):

Текущий в ключе запроса нет файла с именем photo

На самом деле я могу проверить, что сообщение об ошибке верно, поставив его прямо перед попытки-улов:

Код: Выделить всё

dd($request->has('photo'));
=== правда

но

Код: Выделить всё

dd($request->hasFile('photo'));
=== false

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

Любая помощь очень ценится.

Подробнее здесь: https://stackoverflow.com/questions/615 ... not-have-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»