Ruby on rails Ruby gem工厂机器人:
我的目标是创建具有相同值的几个字段的工厂, 例如,我希望该名称和全名相等Ruby on rails Ruby gem工厂机器人:,ruby-on-rails,ruby,rubygems,factory-bot,Ruby On Rails,Ruby,Rubygems,Factory Bot,我的目标是创建具有相同值的几个字段的工厂, 例如,我希望该名称和全名相等 FactoryBot.define do factory :brand do n = Faker::Company.name name { n } full_name { n } end end 上述方法不起作用,因为n只获得一次值 那么,如何评估某个块以与几个动态字段共享其数据呢 另一种情况:我有品牌的YML文件,方法get\u random\u brand返回带有品牌字段的
FactoryBot.define do
factory :brand do
n = Faker::Company.name
name { n }
full_name { n }
end
end
上述方法不起作用,因为n只获得一次值
那么,如何评估某个块以与几个动态字段共享其数据呢
另一种情况:我有品牌的YML文件,方法get\u random\u brand返回带有品牌字段的哈希:
FactoryBot.define do
factory :brand do
b = get_random_brand
name { b['name'] }
full_name { b['full_nam'] }
end
end
我理解工厂在阅读工厂定义时会做什么
如何评估获取\u random\u brand每个创建的工厂仅一个?在FactoryBot中实际上非常简单,因为您只需调用块中其他属性的方法:
FactoryBot.define do
factory :brand do
name { Faker::Company.name }
full_name { name }
end
end
例如,您可以执行以下操作:
FactoryBot.define do
factory :user do
name { Faker::Name.name }
email { name.downcase.tr(' ', '.') + "@example.com" }
end
end
上述方法不起作用,因为n只获得一次值
那是因为工厂。。。读取出厂定义时,将计算do
块。并非每次都使用工厂。在FactoryBot中实际上非常简单,因为您只需调用块中其他属性的方法:
FactoryBot.define do
factory :brand do
name { Faker::Company.name }
full_name { name }
end
end
例如,您可以执行以下操作:
FactoryBot.define do
factory :user do
name { Faker::Name.name }
email { name.downcase.tr(' ', '.') + "@example.com" }
end
end
上述方法不起作用,因为n只获得一次值
那是因为
工厂。。。读取出厂定义时,将计算do
块。并非每次都使用工厂。尝试在FactoryBot范围之外创建并使用ruby变量来解决您的问题。尝试在FactoryBot范围之外创建并使用ruby变量来解决您的问题。好的,请看第二个用例。我想说第二个用例只是滥用FactoryBot作为固定装置机制,而事实并非如此。如果可能的话,你只是在螺钉上使用锤子。好的,请看第二个用例。我想说第二个用例只是误用FactoryBot作为固定装置机制,而事实并非如此。如果可能的话,你只是在螺丝上用锤子。