gpt4 book ai didi

ruby-on-rails - 带有 FactoryGirl 序列的自定义范围

转载 作者:行者123 更新时间:2023-12-04 10:17:50 24 4
gpt4 key购买 nike

在旧版本中,这样的事情是可能的( more examples ):

Factory.sequence(:email, 50..60) do |n|
"user_#{n}@example.com"
end

在新的 FactoryGirl 版本中使用它会创建一个 NoMethodError: undefined method 'next' for 0..10:Range .

特别是我有一个模型 user其中有多个 time_entries .我想创建默认值。为简单起见,每个用户应创建 n时间条目。条目是这样创建的:
FactoryGirl.define do
factory :time_entry do
start_time { generate(:time_entry_begin) }
end_time { generate(:time_entry_end) }
end
end

FactoryGirl.define do
sequence(:time_entry_begin, 0..10) do |n|
DateTime.now - n.hours
end
end

FactoryGirl.define do
sequence(:time_entry_end, 0..10) do |n|
DateTime.now - n.hours + (1 + n).minutes
end
end

最佳答案

您必须传递一个响应 next 的对象,例如枚举器:

FactoryGirl.define do
factory :user do
sequence(:email, (50..60).cycle) { |n| "user_#{n}@example.com" }
end
end

FactoryGirl.build(:user) #=> <#User @email="user_50@example.com">
FactoryGirl.build(:user) #=> <#User @email="user_51@example.com">
FactoryGirl.build(:user) #=> <#User @email="user_52@example.com">
# ...
FactoryGirl.build(:user) #=> <#User @email="user_59@example.com">
FactoryGirl.build(:user) #=> <#User @email="user_60@example.com">
# `cycle` will start over:
FactoryGirl.build(:user) #=> <#User @email="user_50@example.com">

关于ruby-on-rails - 带有 FactoryGirl 序列的自定义范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25363314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com