mardi 13 février 2018

How to occur UploadedFile exception on purpose in phpunit?

I want to test UploadedFile Exception in phpunit, but don't know how to occur.

I'd been searching for laravel docs and phpunit docs, but can't get infos.

Versions

  • laravel 5.5
  • phpunit 6.5

Below, excerpt codes.

Thanks.

phpunit

<?php declare(strict_types = 1);
namespace Tests\Foo;

use Tests\TestCase;
use Illuminate\Http\UploadedFile;

final class FooTest extends TestCase
{
    /**
     * @test
     */
    public function failure()
    {
        $image_path = storage_path() . '/test/test.png';
        $file = new UploadedFile($image_path, 'test.png', 'image/png', filesize($image_path), null, true);

        $params = [
            '_method' => 'put',
            'image' => $file
        ];
        $this->json('post', '/foo', $params)->assertStatus(400);
    }
}

routes

<?php
Route::put('/foo', 'FooController@put');

controller

<?php declare(strict_types = 1);
namespace App\Http\Controllers;

use Exception;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;

final class FooController extends Controller
{
    public function put(Request $request): JsonResponse
    {
        $this->validate($request, [
            'image' => 'required|image|max:9999999'
        ]);

        $file = $request->file('image');

        try {
            $file->store('foo/');
        } catch (Exception $e) {
            // exec this
            return response()->json(['error' => $e->getMessage()], 400);
        }

        return response()->json(['success' => 'success'], 200);
    }
}



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire