[Day 25] 测试文件上传

Laravel有提供UploadedFile类别,
其中有一个fake方法,
让我们可以生成一个虚拟的图片或文件
来测试文件上传的功能,
而不需要实际上去找个图片或文件来测试。

譬如说以下的测试语法

<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
use Tests\TestCase;

class ExampleTest extends TestCase
{
    public function test_avatars_can_be_uploaded()
    {
        Storage::fake('avatars');

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

        $response = $this->post('/avatar', [
            'avatar' => $file,
        ]);

        Storage::disk('avatars')->assertExists($file->hashName());
    }
}

我们生成了一个avatar.jpg,
然後执行了图片上传的方法之後,
再来确认这个图片是否存在。

所以如果我们想要确认文件是否存在,
就可以使用以下的方法

Storage::fake('avatars');
// ...
Storage::disk('avatars')->assertMissing('missing.jpg');

当然我们也可以指定这个图档的宽度、高度、以及大小(KB),
方便我们来做测试

UploadedFile::fake()->image('avatar.jpg', $width, $height)->size(100);

我们也可以建立图片之外的其他档案,
譬如一个PDF档案,
其中$sizeInKilobytes是指定档案的大小(KB)

UploadedFile::fake()->create('document.pdf', $sizeInKilobytes);

我们也可以指定MIME类型

UploadedFile::fake()->create(
    'document.pdf', $sizeInKilobytes, 'application/pdf'
);

<<:  [Day11] Big Table

>>:  Day 14 - AI-900 认证心得(2) - 考试

Day 08 「说好的射後不理呢?」多线程环境下的单元测试

今天来聊聊「多线程」的单元测试。 多线程测试的困难点 当系统成长到一个程度,效能的重要性就会慢慢浮现...

我在 WordPress.com 与 WordPress.org 之间的最终选择

关於 WordPress.com 与 WordPress.org 之间,有什麽样的差异,WordPr...

建立第一个RESTful api server(番外篇)-postman使用(Day13)

在实作RESTful api时,会需要模拟实际用户使用你的api的情境,这时候postman就派得上...

第33天~还原资料库

这个的上一篇:https://ithelp.ithome.com.tw/articles/10283...

2.4.8 Design System - Icon

因为疫情的关系 体会到很多事情都要持之以恒 在突然被打乱的生活节奏中 要怎麽找回另一个习惯的步调 ...