创建: 2019/10/10
安装 | ||||||||||||||||||||||||||
Gemfile |
# Gemfile group :development, :test do gem ‘factory_bot_rails‘ end
|
|||||||||||||||||||||||||
省略类名的设置 |
#spec/rails_helper.rb RSpec.configure do |config| config.include FactoryBot::Syntax::Methods end
|
|||||||||||||||||||||||||
文件位置 |
spec/factories/
|
|||||||||||||||||||||||||
使用 | ||||||||||||||||||||||||||
定义factory |
FactoryBot.define do factory :book do title { "factory sample" } end factory :sample, class: Book do title { "sample" } end end
|
|||||||||||||||||||||||||
生成数据 |
|
|||||||||||||||||||||||||
批量生成 |
*_list(factory, count, attributes) 例: books = create_list(:book, 10, price: 9999)
|
|||||||||||||||||||||||||
序列 |
sequence: sequence :name do |i|
...
end
generate: factory :sample do
attribute { generate :name }
end
例: FactoryBot.define do sequence :isbn do |p| "UUID-#{11111*p}" end factory :book do title { "factory sample" } isbn { generate :isbn } end end
|
|||||||||||||||||||||||||
生成association (belongs_to) |
association :关联名, factory: ...[, strategy: :build][, attributes]
● 只能用在belongs_to ● 也可以直接在belongs_to关系里放入factory FactoryBot.define do sequence :review_bodies do |i| "review-#{i}" end factory :review do body { generate :review_bodies } user book end end
|
|||||||||||||||||||||||||
给factory添加别名 |
factory :sample, class: User, aliases: [...] do ... end
|
|||||||||||||||||||||||||
使用固有词做属性 |
add_attribute(name) { ... }
|
|||||||||||||||||||||||||
添加不是固有attribute的属性 |
transient do sample { "sample" } ... end 例: FactoryBot.define do sequence :review_bodies do |i| "review-#{i}" end factory :review do transient do comment { "" } end body { comment.blank? ? generate(:review_bodies) : comment } user book end end
|
|||||||||||||||||||||||||
原文:https://www.cnblogs.com/lancgg/p/11647691.html