Pål*_*Pål 4 rspec ruby-on-rails factory-bot
我有三个工厂,我想干.它们看起来像这样:
factory :sequenced_stamps_by_years, class: Stamp do
...
sequence(:day_date) { |n| n.years.ago }
end
factory :sequenced_stamps_by_months, class: Stamp do
...
sequence(:day_date) { |n| n.months.ago }
end
factory :sequenced_stamps_by_weeks, class: Stamp do
...
sequence(:day_date) { |n| n.weeks.ago }
end
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?我希望能够创建这样的东西:
FactoryGirl.create_list(:sequenced_stamps_by_x, 4, x: "weeks") ## <- So that i can decide whether I want weeks, days, years, or months ago.
Run Code Online (Sandbox Code Playgroud)
这可能吗?
bou*_*der 10
如果您不喜欢继承方法,可以使用参数替代.基本上:
factory :stamps do
ignore do
interval :years # possible values => :years, :months, :weeks
end
sequence(:date_date) { |n| n.send(interval).ago }
# rest of attributes here
end
Run Code Online (Sandbox Code Playgroud)
现在你可以这样做:
FactoryGirl.create(:stamps, :interval => :months)
Run Code Online (Sandbox Code Playgroud)
要么
FactoryGirl.create(:stamps)
Run Code Online (Sandbox Code Playgroud)
默认为年.
所有这些你可以在Factory Girl瞬态属性中找到