用途:Factory Bot 为 Ruby 项目提供测试数据搭建框架,用工厂定义替代传统 fixtures,使测试数据更灵活、易维护。
主要能力:可定义工厂并覆盖属性;用 sequence 生成唯一值(含可复用命名序列);用块实现动态属性,可配合 Faker 生成真实数据;支持 belongs_to 与 has_many 关联;用 traits 定义可复用属性组合并可叠加;用 transient 属性向工厂传参而不写入模型;提供 after(:build)、before(:create)、after(:create)、after(:stub) 等回调;支持工厂继承与 parent 指定。
构建策略:create 写数据库并返回真实 ID,适合集成测试;build 不写库、ID 为 nil,适合单元测试与校验;build_stubbed 最快、使用假 ID,适合隔离测试;attributes_for 返回属性哈希,适合控制器参数。另有 create_list、build_list 批量构建,以及 FactoryBot.lint 校验工厂定义。
使用方式:在 Gemfile 的 development、test 组加入 gem "factory_bot_rails";在 spec/rails_helper.rb 中通过 RSpec.configure 的 config.include FactoryBot::Syntax::Methods 引入语法方法。工厂通常定义在 spec/factories 下。
适用场景:Rails/RSpec 测试中构建用户、文章等模型数据,处理关联、状态变体与批量数据。
限制与建议:资料未提供版本、性能基准或收费信息。建议工厂保持最小化,用 traits 表达状态变体,避免创建测试中不需要的关联记录。