创建: 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|
    ...
endgenerate: 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