第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用表單驗證測試 Laravel 媒體上傳

如何使用表單驗證測試 Laravel 媒體上傳

PHP
一只甜甜圈 2023-05-12 16:04:14
前段時間我在我的 laravel 項目中為我的媒體上傳寫了一個測試。測試只是將帶有圖像的 post 請求發(fā)送到路由,并檢查服務(wù)器是否發(fā)送 200 狀態(tài)代碼。use Illuminate\Http\UploadedFile;/** @test */public function it_can_upload_image(){    $response = $this->post('/media', [        'media' => new UploadedFile(__DIR__ . "/test_png.png", 'test_png.png'),    ]);    $response->assertStatus(200);}當(dāng)我為 post 參數(shù)添加驗證規(guī)則時,media服務(wù)器返回 302 狀態(tài)代碼并且測試失敗。但是,當(dāng)我在瀏覽器中手動測試媒體上傳時,一切正常。public function uplaodMedia($request) {    $request->validate([        'media' => 'required'    ]);    // ...}測試中請求的行為似乎與實際的瀏覽器請求不同。但是,直到現(xiàn)在我還沒有設(shè)法解決這個問題。有沒有人遇到過類似的事情?
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經(jīng)驗 獲得超3個贊

在為測試創(chuàng)建新的時,您需要傳遞true參數(shù):$testUploadedFile

new?UploadedFile(__DIR__?.?"/test_png.png",?'test_png.png',?null,?null,?true)

在這里您可以找到構(gòu)造函數(shù)定義:

/**

?* @param bool? ? ? ? $test? ? ? ? ?Whether the test mode is active

?*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Local files are used in test mode hence the code should not enforce HTTP uploads

?*/

public function __construct(string $path, string $originalName, string $mimeType = null, int $error = null, bool $test = false)

雖然我不明白為什么要使用真實圖像進行此測試,但 Laravel 提供了一種內(nèi)置方式來輕松測試文件上傳。


從文檔:


Storage facade 的 fake 方法允許您輕松生成一個假磁盤,結(jié)合 UploadedFile 類的文件生成實用程序,大大簡化了文件上傳的測試。


因此,您的測試可以簡化為以下內(nèi)容:


use Illuminate\Http\UploadedFile;

use Illuminate\Support\Facades\Storage;


/** @test */

public function it_can_upload_image()

{? ? ? ??

? ? Storage::fake();


? ? $this->post('/media', ['media' => UploadedFile::fake()->image('test_png.png')])

? ? ? ? ->assertStatus(200);

}


查看完整回答
反對 回復(fù) 2023-05-12
  • 1 回答
  • 0 關(guān)注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號