プログラミング

[Rails]RSpecで画像投稿機能( CarrierWave)のモデルのテスト方法

投稿日:

こんにちは、Nanayakuです。

今回は、RSpecで画像投稿機能(CarrierWave)のテストを行う方法について解説します。

画像アップロード CarrierWaveを使ったmodelのRSpecを通す - Qiitaを参考に説明しますが、自分は「factory_bot_rails」でuserのみ、ダミーを作成した状態で解説します。

userの作成

Gemfileに「gem "factory_bot_rails"」を追記し、bundle installします。

その後、下記のコマンドでダミーuserを作るためのファイルを作成します。

自分は以下のダミーを作成しました。

 

topicの作成

「spec/models/topic_spec.rb」にテストを書いていきます。

自分は画像のような関連付けでDBを作成しました。

まず、userとmicropost(ツイート)を作成しておきます。

次に、topic(画像)を作成します。

ここのimageの書き方は、画像アップロード CarrierWaveを使ったmodelのRSpecを通す - Qiitaを参考に、

Rack::Test::UploadedFile.new(File.join(Rails.root, '画像ファイルがある場所のパス'))

となります。

上記の記事では、「spec/fixturesディレクトリ」に画像を用意していましたが、画像がある場所ならどこでも大丈夫です。

自分は、アプリケーションで使用していが画像を使用し、下記のようになりました。

 

テストの作成

インスタンス変数に格納しているので、後は通常通りテストを書けば終了です。

 

最後に

今回自分は、「factory_bot_rails」を使いきれていなかったため、不恰好なテストコードになってしましました。

もっと良い書き方を調べたら、更新していこうと思います。

備忘録がわりに作ったので、間違っている所とかあったら、コメントくれると嬉しいです。

-プログラミング
-

Copyright© Nanayaku blog , 2019 All Rights Reserved Powered by AFFINGER5.