3

I'm working on a rails application on which the models are plain ruby classes without any persistence layer (no active record or similar). I want to test these models from RSpec with all the niceties that some factories provide (machinist, factory-girl). These models may get associations with persistent models in the future or may implement a custom persistance model.

Any suggestions?

Diego Echeverri
  • 163
  • 1
  • 9

1 Answers1

0

I like to use the Sham gem. As long as you have a non-persistent model that conforms to some basic implementation details you should be fine. For instance, in my Rails app I would do the following:

# sham/dog_sham.rb
class Dog::Sham
  def self.options
    { name: "Barney" }
  end
end

# app/models/dog.rb
class Dog < Struct.new(:name)
  def self.create options
    self.new(options[:name])
  end
end

Then in the console I can create a factory Dog using the sham command:

Sham::Config.activate!
Dog.sham!
=> #<struct Dog name="Barney">
Pan Thomakos
  • 34,082
  • 9
  • 88
  • 85