내 테스트는 다음과 같습니다이 테스트에서 각 개체를 만들어야합니까?
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
을하지만 그것을 실행할 때이 오류가 얻을 :
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
내 공장은 다음과 같이 : 여기
1) Error:
test_should_post_save_period(PeriodRegistrationsControllerTest):
NoMethodError: undefined method `event' for nil:NilClass
내 컨트롤러를 :
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 모델에서 새 메서드를 만들어야합니다. 나는 나의 대답을 업데이트했다. –