OOZOU
与我们联系
返回 TIL 列表
ruby

FactoryBot 也可以用在非 ActiveRecord 的 model 上

October 13, 2020

你可以用 FactoryBot 的 initialize_with 方法,以任何你想要的方式初始化对象,让你能随心所欲地为任何对象创建 factory

FactoryBot.define do
  factory :citizen_id_image, class: CitizenIdImagePresenter do
    image_url { 'https://placehold.it/200x200' }

    initialize_with { new(image_url: image_url) }
  end
end
build(:citizen_id_image)
#=> 

前言

FactoryBot 是 Ruby on Rails 应用程序中广受欢迎的测试工具,让开发者能随时定义并创建测试 fixture。它提供了灵活而高效的方式来创建测试数据,让测试更容易编写和维护。在这篇文章中,我们会探讨如何在 Rails 测试中有效使用 FactoryBot。

设置 FactoryBot

要在你的 Rails 应用程序中设置 FactoryBot,你需要把 factory_bot 这个 gem 加进 Gemfile,然后运行 bundle install 命令。接着你可以在 config/initializers 目录创建一个 factory_bot.rb 文件来设置 FactoryBot。在这个文件里,你可以定义 factory_bot 的设置,例如 factory 的路径和默认 strategy。

定义 model 与 factory

在 FactoryBot 中,factory 是创建对象的蓝图。你可以在 factories 目录创建文件,为某个 model 定义 factory。比如,如果你有一个 User model,可以在 factories 目录创建 user.rb 文件来定义 user factory。在这个文件里,你可以定义 user factory 的属性和关联。

factory 的选项与属性

FactoryBot 提供了多种选项和属性,让你自定义 factory。比如,你可以用 class 属性指定要创建的对象所属的类。你也可以用 attributes 选项定义 factory 的属性。此外,你还可以用 association 选项定义 factory 之间的关联。

结语

总的来说,FactoryBot 是在 Rails 应用程序中创建测试 fixture 的强大工具。通过为 model 定义 factory,你可以快速、高效地创建测试数据。凭借灵活的设置选项和可自定义的属性,FactoryBot 让测试更容易编写和维护。遵循本文提到的最佳实践,你就能充分发挥 FactoryBot 的价值,提升测试质量。

更多关于 ruby 的笔记

rubyApril 30, 2021

让 Pry 支持粘贴使用行首点记法的多行 Ruby 区块

我们现在很常使用行首点记法,例如

rubyOctober 14, 2020

不含插值的 Heredoc

有时你想用 Ruby 的 Heredoc,但不希望它做插值('#{....}')。只要给你的标识符加上一对单引号就能做到:

rubyOctober 13, 2020

在 Ruby 中自动创建中间层的 Hashtable

所有中间层的 hashtable 都会魔法般地自动创建出来

有项目想法吗?

我们很想听听您正在做的产品。

开始对话hello@oozou.com
OOZOU Logo

曼谷 · 新加坡 · 香港

X
Facebook
Instagram
LinkedIn
OOZOU Co., Ltd.
548 One City Centre
Ploenchit Road
Bangkok 10330
Thailand
+66 2544 0000
hello@oozou.com

服务

  • Web 开发
  • AI 智能体与生成式 AI
  • 移动应用开发
  • 数据分析与工程
  • UI/UX 与产品设计
  • 数字化转型

公司

  • 关于我们
  • 加入我们
  • 博客
  • 案例研究
  • Today I Learned
  • 联系我们

更多

  • 行业
  • 合作伙伴网络
© 2026 OOZOU. 版权所有。
隐私政策行为准则反贿赂反贪腐政策