Decidingscontroller에서 #create를 테스트하고 Undertaking 모델과 관련하여 결정 모델에 undertaking_id 열이 있고 Askking과 관련된 asking_id 열이 있습니다. 모델. 그래서, 내 공장/decidings.rb 아래 있습니다.Factorygirl, rspec과 1 (has_one)의 관계를 표현할 수 없습니다
factory :deciding do
after(:build) do |deciding|
deciding.asking ||=build(:asking, deciding: deciding)
deciding.undertaking ||=build(:undertaking, deciding: deciding)
end
end
및 내 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