我想在Decidingscontroller中測試#create,並且決定模型具有與Undertaking模型關聯的undertaking_id列,並且具有與Asking關聯的ask_id列模型。 所以,我的工廠/ decidings.rb在下面。Factorygirl,我無法表示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
和我的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在這種情況下是如下。
#<Deciding id: nil, asking_id: nil, undertaking_id: nil, created_at: nil, updated_at: nil>
所以我不能創建測試,因爲undertaking_id和asking_id是零。 爲什麼undertaking_id和asking_id無?請幫助我... 無論如何,我的工廠/ ask.rb在下面。
FactoryGirl.define do
factory :asking do
association :user
sequence(:content){|i| "お願いします#{i}"}
end
end
您應該使用',而不是'has_one' belongs_to'關聯。但是,由於您沒有展示您的模型,因此無法確切說出。 – iSunRise