Testing a gem that uses ActiveRecord models

前端 未结 1 396
半阙折子戏
半阙折子戏 2020-12-31 11:13

I wrote a gem that imports data into your database if you pass in an ActiveRecord model. For example:

importer = Importer.new(Widget)
importer.import(data_so         


        
相关标签:
1条回答
  • 2020-12-31 11:44

    Mostly inspired from this post: http://blog.markstarkman.com/blog/2013/01/23/using-sqlite-to-test-active-record-models/

    First, in your gemspec, you can add ActiveRecord and sqlite3 as dependencies like so:

    spec.add_development_dependency "activerecord", "~> 4.0.0"
    spec.add_development_dependency "sqlite3"
    

    Then in spec/schema.rb, you can define your schema like so:

    ActiveRecord::Schema.define do
      self.verbose = false
    
      create_table :users, :force => true do |t|
        t.string :key
        t.string :name
        t.integer :age
        t.datetime :dob
    
        t.timestamps
      end
    
    end
    

    Then you can create your models in a models.rb file:

    class User < ActiveRecord::Base
    end
    

    In your spec_helper.rb, you want to connect to an in-memory sqlite database, load the schema, and require the models:

    require 'active_record'
    
    ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
    
    load File.dirname(__FILE__) + '/schema.rb'
    require File.dirname(__FILE__) + '/models.rb'
    
    0 讨论(0)
提交回复
热议问题