Как проверить загрузку файла в laravel 5.0? - PullRequest
1 голос
/ 13 июня 2019

Я хочу проверить действие по загрузке файлов.

Я проверил проверку типа файла для этого действия. Он работает из-за взаимодействия с браузером, но я попытался с phpunit завершиться неудачей при проверке.

Я принимаю только файлы jpg или jpeg.

Вот мой код устройства

public function testWIthJpgImage()
{
    $_FILES = [
        'front_image' => [
            'name' => 'uitest',
            'type' => 'image/jpeg',
            'size'=> filesize(storage_path('data/uitest.jpg')),
            'error' => 0,
            'tmp_name' => storage_path('data/uitest.jpg')
        ]
    ];

    $response = $this->call('POST', '/api/test',[],[],$_FILES);
    $data = json_decode($response->getContent());
    dd($data); // here validation fail always
    $this->assertEquals(200, $response->getStatusCode());
}

Как проверить правильность загрузки файла на phpunit? Моя версия laravel 5.0 (старая версия) Файл загрузки Laravel недоступен

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Для этого вы можете использовать Illuminate\Http\UploadedFile Фасад.

Вот пример одного из моих проектов, где я загружаю и сохраняю файл. Он также имеет таблицу файлов и модель.

/** @test */
function create_new_file ()
{

    $payload = [
        'file' => UploadedFile::fake()->image('avatar.jpg')
    ];

    // act
    $response = $this->post("/api/files", $payload);

    // test
    $response->assertStatus(201);

    Storage::disk('local')->assertExists(File::first()->path);
}

Не забудьте

use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;

Кроме того, вы можете использовать

Storage::fake('local');

, чтобы не сохранять загруженные файлы (если вы используете Хранилище, как я). Это очень удобно, так что ваши тесты не создают кучу файлов в вашей папке загрузки.

0 голосов
/ 13 июня 2019

Я думаю, что моя проблема решена, но она так устала от этого :) Я установил $_FILES и Symfony UploadedFile: <</p>

$_FILES = [
    'front_image' => [
        'name' => 'uitest',
        'type' => 'image/jpeg',
        'size'=> filesize(storage_path('data/uitest.jpg')),
        'error' => 0,
        'tmp_name' => storage_path('data/uitest.jpg'),
        'test' => true
    ]
];
$uploadedFile = new Symfony\Component\HttpFoundation\File\UploadedFile(
  storage_path('data/uitest.jpg'),
  'uitest.jpg',
  'image/jpeg',
  filesize(storage_path('data/uitest.jpg')),
  0,
  true
);
$response = $this->call('POST', '/api/test',[],[],['front_image' => $uploadedFile]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...