2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[テスト]FactoryBotにimageを記述する

Posted at

はじめに

本記事は、テストコードに関するもので、
FactoryBotにimageを記述する方法(factoriesディレクトリ)を記述します。

本日、何時間も悩んだものになるので、
短いですが、アウトプットしたいと思います。

単体テストコードに関する記事は、以下も参照してください。
内容的には、ターミナルにて以下を記述後のこととなっております。

% rails g rspec:model テーブル名

FactoryBotにActiveStorageの記述をする

早速ですが、例文です。

FactoryBot.define do
  factory :tweet do
    content {Faker::Lorem.sentence}
    association :user

    after(:build) do |tweet|
      tweet.image.attach(io: File.open('ディレクトリ名/画像ファイル名'), filename: 'ファイル名')
    end
  end
end

afterメソッド

任意の処理の後(ここでは、(:build))の後に、
指定の処理((:build)以降の処理)を実行することができます。

io: File.open

ここで設定したパスのファイル('ディレクトリ名/画像ファイル名')をfilenameを'ファイル名'として実行しています。

association

今回の趣旨とは、やや離れますが、
対象のテーブルとのアソシエーションも忘れずに記述しましょう。

association :user

実際にしてしまったミス

①テーブルのカラムに存在すると勘違いしてしまい、
今回の例文に沿って記述すると

// (注意)謝った記述です。

FactoryBot.define do
  factory :tweet do
        image {'ディレクトリ名/ファイル名'}     ←間違い!!
    content {Faker::Lorem.sentence}
    association :user
  end
end

と記述してしまった。

②カラムに存在しないことがわかり、アソシエーションするのかと勘違いした。

// (注意)謝った記述です。

FactoryBot.define do
  factory :tweet do
    content {Faker::Lorem.sentence}
    association :user
        association :image                 ←間違い!!
  end
end

終わりに

学習したことでしたが、全く初見のように思えてしまいました。
このようなことは今後も増えてきてしまうかと思いました。

しかし、忘れているのなら、
次は、理解して覚えていたら良いことです。

後ろは、フィードバックする時以外は向かず、
新しく出てきたものや、再度登場してきたものをどんどん理解していきたいと思います。

それでは、
明日も頑張りましょう!!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?