流明文件上传测试:请求中不存在文件

时间:2018-07-06 11:38:06

标签: laravel unit-testing phpunit lumen

我正在尝试在Lumen 5.6中测试文件上传,但是def ll_series (p): ll_list=[4] print 4 for i in range(1, p+1): ll_list.append((ll_list[i-1]**2 - 2) % (2**p-1)) print(ll_list[i]) return ll_list 伪造未通过控制器中的检查。例如:

测试:

Illuminate\Http\UploadedFile

控制器:

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

public function testUploadImage()
{
    Storage::fake('s3');

    $this->actingAs($this->user)
        ->post('/v1/files', [
            'file1' => UploadedFile::fake()->image('avatar.jpg'),
        ])
        ->seeJsonStructure([
            'file1' => [
                'filename',
                'mime',
            ],
        ])
        ->assertResponseStatus(201);

    ...
}

验证已通过,但是public function upload(Request $request) { $this->validate($request, [ 'file1' => 'required|file|mimetypes:image/jpeg', ]); // Temp check if (!$request->hasFile('file1')) { echo 'no file'; } $filename = $request->file('file1')->hashName(); $mime = $request->file('file1')->getMimeType(); Storage::disk('s3') ->putFile( $this->getFolderByMime($mime), $request->file('file1'), 'public' ); return $this->respond([ 'file1' => [ 'filename' => $filename, 'mime' => $mime, ] ]); } 始终返回$request->hasFile('file1')

P.S。我使用Amazon S3存储文件。

1 个答案:

答案 0 :(得分:0)

在流明中,文件参数被硬编码为空。 See Github issue

  

之所以会这样,是因为将files参数传递给了调用   调用中的方法被硬编码为一个空数组。

您需要按如下方式构造调用:

$this->actingAs($this->user)
    ->post('/v1/files', [], [], [
        'file1' => UploadedFile::fake()->image('avatar.jpg'),
    ])
    ->seeJsonStructure([
        'file1' => [
            'filename',
            'mime',
        ],
    ])
    ->assertResponseStatus(201);