Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

223
Visualizações
Error al probar la carga de archivos en laravel 5.4

Estoy tratando de agregar una función de imagen de perfil en mi aplicación. Estoy usando el enfoque TDD para hacer esto. La prueba para cargar la imagen de perfil se muestra en verde. Pero cuando ejecuto la prueba para actualizar la foto de perfil, da un error. A continuación se muestra el código:

Controlador:

 public function store(StoreAvatarRequest $request) { $path = $request->file('avatar')->store('avatars'); BasicInformation::updateOrCreate([ 'user_id' => auth()->id(), ], [ 'user_id' => auth()->id(), 'avatar' => $path, ]); $this->showAlerts('alert-success', 'Profile Image uploaded successfully'); return redirect()->route('avatar.index'); } public function update(StoreAvatarRequest $request, $id) { $basicProfile = BasicInformation::find($id)->first(); $oldAvatarPath = $basicProfile->avatar; if ($basicProfile->user_id == auth()->id()) { $path = $request->file('avatar')->store('avatars'); $basicProfile->avatar = $path; $basicProfile->update(); Storage::delete($oldAvatarPath); $this->showAlerts('alert-success', 'Profile Image Updated Successfully'); return redirect()->route('avatar.index'); } else { // TODO :: Need to add logic here } }

Caso de prueba:

 public function can_update_profile_picture() { $this->actingAs($this->lawyer)->post(route('avatar.store'), [ 'avatar' => UploadedFile::fake()->image('avatar.jpg', 600, 600) ]); $oldImagePath = $this->lawyer->information->avatar; $this->actingAs($this->lawyer)->put(route('avatar.update', ['id' => $this->lawyer->information->id]), [ 'avatar' => UploadedFile::fake()->image('avatar1.jpg', 600, 600) ]) ->assertRedirect(route('avatar.index')) ->assertSessionHas('status', 'Profile Image Updated Successfully'); Storage::disk('local')->assertExists($this->lawyer->information->avatar); Storage::disk('local')->assertMissing($oldImagePath); }

Recibo el siguiente error cuando ejecuto la prueba:

 PHPUnit 5.7.19 by Sebastian Bergmann and contributors. F 1 / 1 (100%) Time: 298 ms, Memory: 20.00MB There was 1 failure: 1) Tests\Feature\Dashboard\Lawyer\Account\ProfileImageTest::can_update_profile_picture Unable to find a file at path [local/c5tjUUQDzU4iKHauJK68Z801I5iaYJ7e3cVQ5iA1.jpeg]. Failed asserting that false is true.
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Esta es una cuestión de configuración y luego preferencia por usar los métodos store() o storeAs().

En primer lugar, debe configurar filesystems.php para reconocer su disco de almacenamiento de prueba como el disco fake() :

 'testing' => [ 'driver' => 'local', 'root' => storage_path('framework/testing/disks/'), 'visibility' => 'public',

El uso de esa configuración le permite usar su valor APP_ENV en phpunit.xml para establecer este disco por defecto para sus pruebas.

Además, uso storeAs() en mi controlador para poder probar con el nombre de archivo que almacené en el método assertExists() en mi prueba.

 $request->file('avatar')->storeAs('avatar', $request->file('avatar')->getClientOriginalName()) Storage::disk('avatar')->assertExists('avatar.jpg');

Esto es lo que funciona para mí y los archivos se eliminan antes de ejecutar cada prueba y la limpieza no es un problema. También puede hacer una prueba para hashName y usar el método store() obteniendo la respuesta y usando baseName() para obtener el nombre del nuevo archivo.

about 4 years ago · Santiago Trujillo Relatório

0

He agregado a phpunit.xml la siguiente línea:

 <env name="FILESYSTEM_DRIVER" value="uploads"/>

y al revisar

 $image = $response->original['logo']; // as the image name get changed in Controller Storage::disk('uploads')->assertExists("public/uploads/$image");

Otros códigos son similares a Laravel Doc . Es posible que desee consultar la discusión en Laracast .

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda