Ruby gem 工厂机器人:
Ruby gem Factory Bot:
我的目标是创建具有相同值的几个字段的工厂,
例如我希望那个名字和 full_name 相等。
FactoryBot.define do
factory :brand do
n = Faker::Company.name
name { n }
full_name { n }
end
end
上面的方法是行不通的,因为n只取值一次
那么,如何评估一些块以与几个动态字段共享其数据?
另一种情况:我有带有品牌的 YML 文件,方法 get_random_brand returns 带有品牌字段的散列:
FactoryBot.define do
factory :brand do
b = get_random_brand
name { b['name'] }
full_name { b['full_nam'] }
end
end
我理解 factory 在读取工厂定义时。
如何评估每个工厂创建的 get_random_brand?
Dependent attributes 在 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
The above approach doesn't work, because n get value only one time.
那是因为在读取工厂定义时会评估 factory ... do
块。不是每次都用factory.
我的目标是创建具有相同值的几个字段的工厂, 例如我希望那个名字和 full_name 相等。
FactoryBot.define do
factory :brand do
n = Faker::Company.name
name { n }
full_name { n }
end
end
上面的方法是行不通的,因为n只取值一次
那么,如何评估一些块以与几个动态字段共享其数据?
另一种情况:我有带有品牌的 YML 文件,方法 get_random_brand returns 带有品牌字段的散列:
FactoryBot.define do
factory :brand do
b = get_random_brand
name { b['name'] }
full_name { b['full_nam'] }
end
end
我理解 factory 在读取工厂定义时。
如何评估每个工厂创建的 get_random_brand?
Dependent attributes 在 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
The above approach doesn't work, because n get value only one time.
那是因为在读取工厂定义时会评估 factory ... do
块。不是每次都用factory.