Ruby on rails 具有FactoryGirl序列的自定义范围
在旧版本中,类似这样的事情是可能的(): 在新的FactoryGirl版本中使用此选项将为0..10:Range创建一个Ruby on rails 具有FactoryGirl序列的自定义范围,ruby-on-rails,factory-bot,Ruby On Rails,Factory Bot,在旧版本中,类似这样的事情是可能的(): 在新的FactoryGirl版本中使用此选项将为0..10:Range创建一个NoMethodError:undefined方法“next” 特别是我有一个模型用户,它有多个时间项。我想创建默认值。为了简单起见,每个用户都应该创建n时间条目。创建的条目如下所示: FactoryGirl.define do factory :time_entry do start_time { generate(:time_entry_begin) }
NoMethodError:undefined方法“next”
特别是我有一个模型用户
,它有多个时间项
。我想创建默认值。为了简单起见,每个用户都应该创建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">
FactoryGirl.define do
工厂:用户做什么
顺序(:email,(50..60).cycle){n|“user|n}@example.com”}
结束
结束
FactoryGirl.build(:user)#=>
FactoryGirl.build(:user)#=>
FactoryGirl.build(:user)#=>
# ...
FactoryGirl.build(:user)#=>
FactoryGirl.build(:user)#=>
#“循环”将重新开始:
FactoryGirl.build(:user)#=>
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">