Using FactoryBot with a PORO
You can, and probably should, do that.
Psst… You can use FactoryBot to test Plain ole Ruby Objects.
So go ahead.
Extract a PORO.
Write a spec.
Guaranteed to give you that ‘I made my bed today’ kind of feeling.
# app/models/arrow_down.rb
class ArrowDown
# Build an arrow beginning at @from and ending at @to
# from |-╮ |
# | | |
# to |<╯ |
attr_reader :from, :to
def initialize :from, :to
@from = from
@to = to
end
...
# Really cool, well written, arrow methods
...
end
# spec/factories/arrow_down_factory.rb
FactoryBot.define do
factory :arrow_down, class: ArrowDown do
from { 0 }
to { 2 }
initialize_with { new( from: from, to: to ) }
end
end
# spec/models/arrow_down_spec.rb
require "rails_helper"
RSpec.describe ArrowDown, type: :model do
let(:arrow_down) { FactoryBot.build(:arrow_down) }
it "should point down" do
expect(arrow_down.direction).to eq(:down)
end
...
# Really cool, well written, tests
...
end
Want more? Allow me to point you in the direction of a great blog Tips for Using FactoryBot Without an ORM.
If you’re looking for a team to help you discover the right thing to build and help you build it, get in touch.
Published on October 11, 2023