FactoryBot 也可以用在非 ActiveRecord 的 model 上
你可以用 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 的價值,提升測試品質。