2017-03-10 1 views
0

나는이 공장을Rails/RSpec/FactoryGirl - 메소드에 필드를 지정하는 방법은 무엇입니까?

FactoryGirl.define do 
    factory :gst_report do 
    association :organisation, factory: :active_organisation 
    period_months 3 
    period_start_date Date.parse('2015-01-01') 
    period_end_date Date.parse('2015-02-01') 
    end 
end 

을하지만 테스트에서 period_start_date는 종종 다른 날짜로 설정됩니다. 이 테스트들 각각에 대해 다음 달이되도록 period_end_date을 간단히 입력하고 싶습니다.

period_end_date을 현재 period_start_date으로 가져와 한 달 추가하는 방법은 있습니까?

답변

1

예, 당신이 당신의 경우에 작동합니다 FactoryGirl Callbacks

이를 사용하여 period_end_dateperiod_start_date에 플러스 달을 설정할 수 있습니다 손 전에 지정되지 않은

FactoryGirl.define do 
    factory :gst_report do 
    association :organisation, factory: :active_organisation 
    period_months 3 
    period_start_date Date.parse('2015-01-01') 

    after(:build) do |gst_report| 
     gst_report.period_end_date = (gst_report.period_start_date + 1.month) unless gst_report.period_end_date 
    end 
    end 
end 

period_end_date있다. 팩토리를 빌드 할 때 지정되지 않은 경우 종료 날짜 만 지정하여 스펙을 통해 다른 시작/종료 기간을 지정할 수도 있습니다.

+0

@XinruiZhu를 편집하여 코드를 수정 해 주셔서 감사합니다! –

관련 문제