레일스에서의 테스트는 가능한 경우 피할 수없는 미스테리 였지만 사람들이 비용을 지불 할 수 있도록 함께 테스트 할 필요가있는 프로덕션 응용 프로그램을 함께 사용하고 있습니다. 테스트가 실패하기 때문에이 문제는 나를 미치게합니다.하지만 콘솔에서 동일한 명령을 수행하면 (테스트 및 개발 모드에서) 제대로 작동합니다. 내가 말하는대로after_create 콜백은 테스트에서는 작동하지 않지만 콘솔에서는 작동합니다.
user_test.rb
test "should update holidays booked after create"
user = users(:robin)
assert_equal user.holidays_booked_this_year, 4 # this passes
absence = user.absences.create(:from => "2011-12-02", :to => "2011-12-03", :category_id => 1, :employee_notes => "Secret") # this works
assert_equal user.holidays_booked_this_year, 5 # fails
end
absence.rb
after_create :update_holidays_booked
def update_holidays_booked
user = self.user
user.holidays_booked_this_year += self.days_used # the days used attribute is calculated using a before_create callback on the absence
user.save
end
내 유일한 생각은, 그것이 부재 모델에 대한 콜백을 통해 사용자 모델을 업데이트 함께 할 수있는 뭔가가 있다고하지만 , 이것은 콘솔에서 작동합니다.
모든 조언을 주시면 감사하겠습니다.
감사
로빈 당신이 당신의 공장에 사용하는 어떤
감사합니다. 나는 우연히 위의 "do"를 생략했다. 그것은 분명히 내 코드에 존재합니다. 위의 제안을 시도하고 다시보고 드리겠습니다. –
Brandon에게 감사드립니다. 재 장전 한 후 이제 통과 테스트가 있습니다! –