前提・実現したいこと
初学者です。
フリマアプリを作っています。
商品購入機能のモデルの単体テストコードを記述しているのですが、次のようなエラーメッセージが出ています。
発生している問題・エラーメッセージ
エラーメッセージ Failure/Error: item = FactoryBot.create(:item) ActiveSupport::MessageVerifier::InvalidSignature: ActiveSupport::MessageVerifier::InvalidSignature
該当のソースコード
factoryBot
1FactoryBot.define do 2 factory :purchase_shopping do 3 token {"tok_abcdefghijk00000000000000000"} 4 postal_code {"111-1111"} 5 delivery_area_id {Faker::Number.between(from: 2, to: 48)} 6 city {Faker::Address.city} 7 house_number {Faker::Address.street_address} 8 building {"建物"} 9 phone_number {"0#{rand(0..9)}0#{rand(1_000_000..99_999_999)}"} 10 end 11end
rspec
1require 'rails_helper' 2 3RSpec.describe PurchaseShopping, type: :model do 4 before do 5 user = FactoryBot.create(:user) 6 item = FactoryBot.create(:item) 7 item.image = fixture_file_upload('public/image/output-image1.png') 8 purchase = Purchase.create(user_id: user.id, item_id: item.id) 9 @purchase_shopping = FactoryBot.build(:purchase_shopping, user_id: user.id, item_id: item.id, purchase_id: purchase.id) 10 end 11 context "内容に問題がない場合" do 12 it "tokenと住所情報等が適切に入力されていれば登録できる" do 13 expect(@purchase_shopping).to be_valid 14 end 15 end 16end
item
1FactoryBot.define do 2 factory :item do 3 image { Faker::Lorem.sentence } 4 name { Faker::Commerce.product_name } 5 introduce { Faker::Lorem.sentence } 6 category_id { Faker::Number.between(from: 2, to: 11) } 7 status_id { Faker::Number.between(from: 2, to: 7) } 8 pay_for_shopping_id { Faker::Number.between(from: 2, to: 3) } 9 delivery_area_id { Faker::Number.between(from: 2, to: 48) } 10 day_to_ship_id { Faker::Number.between(from: 2, to: 4) } 11 price { Faker::Number.between(from: 300, to: 9_999_999) } 12 association :user 13 end 14end 15
試したこと
同じようなエラーをググり、imageがうまく呼び込めていないことがわかりました。
item.image = fixture_file_upload('public/image/output-image1.png')
を記述したり、items.rbにimageを記述したりしました。なお、テストコードはまだ作成中なので途中段階です。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。