FactoryBot VS Model.new

王建豪
2 min readSep 15, 2019

--

要開始說FactoryBot前,不免要提到它的前身,也就是FactoryGirl了。有興趣的可看看以下連結

https://github.com/thoughtbot/factory_bot/issues/1053

緣由大概是有人覺得工廠女孩有點性別歧視,所以後來就變成以Robot來替代,因為短期內機器人不會來抗議才是。

回到正題,其實FactoryBot是一個非常好用的寫測試小幫手,怎麼說呢?因為它讓我們可以更輕鬆的產生測試資料。首先去GitHub看使用手冊

安裝方法就是去Gemfile加入gem ‘factory_bot’,然後再去終端機 鍵入 bundle install。手動安裝就是在終端機 鍵入 gem install factory_bot

假設你有裝rspec-rails的話,可以在spec/factories看到

在以上圖片範例,是搭配faker來使用的。如果還沒安裝的話,強烈建議試試看喔!!!

這裡提供 Faker-ruby的GitHub網址:https://github.com/faker-ruby/faker

先來Rails Console看看

沒有FactoryBot的時候,大家可能要一筆慢慢的用 product.new 的方式來產生測試資料,有時候不小心打錯字還要 debug,耗費無謂的時間。

但經由FactoryBot的幫助,就可以不用自己辛苦地手動鍵入測試資料了!

不過缺點也是有的,因為在輕忽的狀況下會產生驗證上的錯誤。

例如:設定測試欄位為 id 的時候,又有2筆資料產生就會因為 id 值是 primary key 不能重複,而無法儲存。

--

--

No responses yet