DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets has posted 5883 posts at DZone. View Full User Profile

Mocking ActiveRecord

09.28.2005
| 7316 views |
  • submit to reddit
        A search didn't turn anything up, so I tried this:

ActiveRecord::Base.class_eval do
  alias_method :save, :valid?
  def self.columns() @columns ||= []; end
  
  def self.column(name, sql_type = nil, default = nil, null = true)
    columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type, null)
  end
end

The mock model:

class User < ActiveRecord::Base
  validates_presence_of :login
  column :id,       :integer
  column :login,    :string
  column :password, :string
  column :active,   :boolean, true
end

This should provide a quick way to test validations and things like that...
    

Comments

Snippets Manager replied on Fri, 2006/08/25 - 9:09pm

Very neat. Have you had a look at Mocha which allows you to mock/stub methods on concrete objects and classes. So you can mock the ActiveRecord methods like create, save, destroy.