OOZOU
ติดต่อเรา
กลับไปหน้า TIL
ruby

คุณใช้ FactoryBot กับ model ที่ไม่ใช่ ActiveRecord ได้

13 ตุลาคม 2563

คุณสามารถใช้เมธอด initialize_with ของ FactoryBot เพื่อ initialize object แบบไหนก็ได้ตามต้องการ ทำให้คุณสร้าง factory ให้กับ object ใดก็ได้ตามใจ

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 ที่ให้นักพัฒนากำหนดและสร้าง test fixture ได้แบบทันที มันมอบวิธีสร้างข้อมูลทดสอบที่ยืดหยุ่นและมีประสิทธิภาพ ทำให้เขียนและดูแล test ได้ง่ายขึ้น ในบทความนี้เราจะสำรวจวิธีใช้ FactoryBot อย่างมีประสิทธิภาพในการทดสอบ Rails

ตั้งค่า FactoryBot

ในการตั้งค่า FactoryBot ในแอปพลิเคชัน Rails ของคุณ ให้เพิ่ม gem factory_bot ลงใน Gemfile แล้วรันคำสั่ง bundle install จากนั้นตั้งค่า FactoryBot ได้โดยสร้างไฟล์ factory_bot.rb ในไดเรกทอรี config/initializers ในไฟล์นี้คุณสามารถกำหนดการตั้งค่าของ factory_bot เช่น path ของ factory และ strategy เริ่มต้น

กำหนด model และ factory

ใน FactoryBot factory คือพิมพ์เขียวสำหรับสร้าง object คุณสามารถกำหนด factory ให้กับ model ได้โดยสร้างไฟล์ในไดเรกทอรี factories ตัวอย่างเช่น ถ้าคุณมี model ชื่อ User คุณสามารถสร้างไฟล์ user.rb ในไดเรกทอรี factories เพื่อกำหนด factory ของ user ในไฟล์นี้คุณสามารถกำหนด attribute และ association ของ factory user ได้

ตัวเลือกและ attribute ของ factory

FactoryBot มีตัวเลือกและ attribute หลายอย่างให้คุณใช้ปรับแต่ง factory ของตัวเอง ตัวอย่างเช่น คุณสามารถใช้ attribute ชื่อ class เพื่อระบุ class ของ object ที่จะสร้าง ใช้ตัวเลือก attributes เพื่อกำหนด attribute ของ factory และยังใช้ตัวเลือก association เพื่อกำหนดความสัมพันธ์ระหว่าง factory ได้อีกด้วย

สรุป

โดยสรุป FactoryBot เป็นเครื่องมือทรงพลังสำหรับสร้าง test fixture ในแอปพลิเคชัน Rails การกำหนด factory ให้กับ model ของคุณช่วยให้สร้างข้อมูลทดสอบได้อย่างรวดเร็วและมีประสิทธิภาพ ด้วยตัวเลือกการตั้งค่าที่ยืดหยุ่นและ attribute ที่ปรับแต่งได้ FactoryBot ทำให้การเขียนและดูแล test เป็นเรื่องง่าย ทำตาม best practice ที่กล่าวถึงในบทความนี้ แล้วคุณจะได้ประโยชน์สูงสุดจาก FactoryBot และยกระดับคุณภาพของ test ของคุณ

เพิ่มเติมเกี่ยวกับ ruby

ruby30 เมษายน 2564

ทำให้วางโค้ด Ruby หลายบรรทัดใน Pry ได้เมื่อใช้ leading dot notation

ตอนนี้เราใช้ leading dot notation กันบ่อยมาก เช่น

ruby14 ตุลาคม 2563

Heredoc แบบไม่มี interpolation

บางครั้งคุณอาจอยากใช้ Heredoc ของ Ruby แบบไม่มี interpolation ('#{....}') ซึ่งทำได้โดยใส่ dash เดี่ยวรอบ keyword ของคุณ:

ruby13 ตุลาคม 2563

สร้าง hashtable ระดับกลางให้อัตโนมัติใน Ruby

hashtable ระดับกลางทั้งหมดจะถูกสร้างขึ้นให้เองโดยอัตโนมัติ

มีโปรเจกต์ในใจ?

เรายินดีรับฟังสิ่งที่คุณกำลังสร้าง

เริ่มต้นสนทนาhello@oozou.com
OOZOU Logo

กรุงเทพฯ · สิงคโปร์ · ฮ่องกง

X
Facebook
Instagram
LinkedIn

บริการ

  • พัฒนาเว็บ
  • เอเจนต์ AI และ Generative AI
  • พัฒนาแอปมือถือ
  • วิศวกรรมและวิเคราะห์ข้อมูล
  • UI/UX และการออกแบบผลิตภัณฑ์
  • การเปลี่ยนผ่านสู่ดิจิทัล

บริษัท

  • เกี่ยวกับเรา
  • ร่วมงานกับเรา
  • บล็อก
  • กรณีศึกษา
  • Today I Learned
  • ติดต่อเรา

เพิ่มเติม

  • อุตสาหกรรม
  • เครือข่ายพันธมิตร
© 2026 OOZOU สงวนลิขสิทธิ์
นโยบายความเป็นส่วนตัวจรรยาบรรณนโยบาย ABAC