はじめに
本記事は、テストコードに関するもので、
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
終わりに
学習したことでしたが、全く初見のように思えてしまいました。
このようなことは今後も増えてきてしまうかと思いました。
しかし、忘れているのなら、
次は、理解して覚えていたら良いことです。
後ろは、フィードバックする時以外は向かず、
新しく出てきたものや、再度登場してきたものをどんどん理解していきたいと思います。
それでは、
明日も頑張りましょう!!