[Docker+Laravel]テストをしてたらError: Call to undefined function Illuminate\Http\Testing\imagepng()ではまった
1) Tests\Feature\InformationControllerTest::testStore
Error: Call to undefined function Illuminate\Http\Testing\imagepng()
というエラーではまりました。
状況としては、ダミーのイメージを利用したphpunitのテストを実行したタイミングです。
Laravelでは、テスト用に Illuminate\Http\UploadedFileクラスが提供されておりFakeメソッドと組み合わせることで、ファイルやイメージのダミーを簡単に生成することができます。
いろいろ調べてみました。
[参考1]
[参考2]
http://mikeylicio.us/read/test-driven-development-bitbucket-pipelines-and-laravel-forge
どうやら
Dockerコンテナ内でIlluminate\Http\UploadedFileクラスを利用するには、PHP GD が必要な模様。
GDライブラリ
・ PHPの画像処理に関する拡張モジュール(doc)
・ PHPでJPEG,PNG,GIFなどの画像処理ができます
したがって、Dockerfileに
docker-php-ext-install gd
の一行を追記して、PHP GDをコンテナ内にインストールするようにすれば 無事解決しました。
comments powered by Disqus