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

服務

  • Web 開發
  • AI 代理人與生成式 AI
  • 行動應用開發
  • 數據分析與工程
  • UI/UX 與產品設計
  • 數位轉型

公司

  • 關於我們
  • 職涯
  • 部落格
  • 案例研究
  • Today I Learned
  • 聯繫我們

更多

  • 產業
  • 合作夥伴網絡
© 2026 OOZOU. 版權所有。
隱私政策行為準則反賄賂反貪腐政策