Laravel UnitTest 測試上傳圖片檔案
實作遇到的bug
當時所有的網路上都是提供這個方法,但跑測試都是取得 Http code 422,驗證失敗的錯誤訊息
反覆測試移除掉 'mimes:png,jpg,jpeg'
就可以通過,但印出來的file檔案內容有點奇怪
後來發現,由於我有將 faker image 寫成一個 function 提供給不同的情境可以做使用
在 return 的型別中指定了 string
導致回傳的東西會是字串而非圖片物件
再此分享,給有可能遇到相同問題的有緣人
錯誤版本
1 | public function fakerImage(): string |
正確版本
1 | use use Illuminate\Http\UploadedFile; |
程式碼
1 | use Illuminate\Http\UploadedFile; |
調整圖片大小、Mimes
搭配 Request 的 Validation
1 | public function rules() |
1 | UploadedFile::fake()->image('test.jpg')->size(10240); |