Decidingscontrollerで#createをテストし、Undertakingモデルに関連してundertaking_id列を持っています。Askingに関連してasking_id列がありますモデル。 私の工場/ decidings.rbは以下の通りです。ファクトリーガール、1対1(has_one)とrspecのアソシエーションを表現できません
factory :deciding do
after(:build) do |deciding|
deciding.asking ||=build(:asking, deciding: deciding)
deciding.undertaking ||=build(:undertaking, deciding: deciding)
end
end
およびMy spec/controllers/decidings_controller_spec.rbは以下のとおりです。
RSpec.describe DecidingsController, type: :controller do
describe '#create' do
before do
@deciding=build(:deciding)
end
context 'correct_user login' do
before do
login_user(@deciding.asking.user)
end
it 'creates with deciding +1' do
expect{post :create , undertaking_id: @deciding.undertaking_id , asking_id: @deciding.asking_id}.to change(Deciding , :count).by(1)
end
end
end
end
ただし、この場合の@判定は以下のとおりです。
#<Deciding id: nil, asking_id: nil, undertaking_id: nil, created_at: nil, updated_at: nil>
undertaking_idとasking_idがnilなので、テストを作成できません。 なぜundertaking_idとasking_idがnilですか?助けてください... とにかく、私の工場/ asking.rbは以下の通りです。
FactoryGirl.define do
factory :asking do
association :user
sequence(:content){|i| "お願いします#{i}"}
end
end
あなたが代わりに '' has_one'のbelongs_to'の関連付けを使用する必要があります。
はこれを試してみてください。しかし、モデルを公開していないので、正確に言うことは不可能です。 – iSunRise