0
我的測試是這樣的:我是否需要在此測試中創建每個對象?
def setup
@period_registration= FactoryGirl.create(:period_registration)
end
test "should post save_period" do
sign_in(FactoryGirl.create(:user))
assert_difference('PeriodRegistration.count') do
post :save_period, period_registration: FactoryGirl.attributes_for(:period_registration)
end
assert_not_nil assigns(:period_registration)
end
但是當我運行它,我得到這個錯誤:
1) Error:
test_should_post_save_period(PeriodRegistrationsControllerTest):
NoMethodError: undefined method `event' for nil:NilClass
這裏是我的控制器:
def save_period
@period_registration = PeriodRegistration.new(params[:registration])
@period_registration.save
flash[:success] = "Successfully Registered for Session."
redirect_to event_url(@period_registration.period.event)
end
我的工廠是這樣的:
factory :event do
name 'First Event'
street '123 street'
city 'Chicago'
state 'Iowa'
date Date.today
end
factory :period do
name 'First Period'
description 'This is a description'
start_time Time.now + 10.days
end_time Time.now + 10.days + 2.hours
event
product
end
factory :period_registration do
user
period
end
我是否需要創建句點對象和事件對象?如果是這樣如何?我不認爲這是問題,因爲我相信在各個工廠中有「時期」,然後是「產品」,然後是「事件」會自動產生這些問題。
任何想法從哪裏看?
關於你的#1,這是行不通的。我在控制檯中測試了它,並且需要執行'pr.period.event'來獲取事件。 –
你的#3幫助我解決了另一個問題,雖然我正在做! –
@NoahClark關於#1。您必須在PeriodRegistration模型中創建新方法。我已經更新了我的答案。 –