---
title: "คุณใช้ FactoryBot กับ model ที่ไม่ใช่ ActiveRecord ได้"
description: "ใช้ Method initialize_with ของ FactoryBot เพื่อ initialize object ในแบบที่ต้องการได้ จึงสร้าง factory ให้ object ไหนก็ได้ตามใจ"
canonical: https://oozou.com/til/you-can-use-factorybot-for-non-activerecord-models-45
locale: th
date: 2020-10-13
topic: ruby
---

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

> ใช้ Method initialize_with ของ FactoryBot เพื่อ initialize object ในแบบที่ต้องการได้ จึงสร้าง factory ให้ object ไหนก็ได้ตามใจ

Published: 2020-10-13 · Topic: [ruby](https://oozou.com/th/til-topics/ruby) ([markdown](https://oozou.com/th/til-topics/ruby.md))

ใช้ Method *initialize\_with* ของ FactoryBot เพื่อ initialize object ในแบบที่ต้องการได้ จึงสร้าง factory ให้ object ไหนก็ได้ตามใจ

```ruby
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 ใน Directory config/initializers ในไฟล์นี้ให้กำหนดค่าของ factory\_bot เช่น path ของ factory และ strategy เริ่มต้น

# กำหนด model และ factory

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

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

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

# สรุป

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

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/th/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
