如果你传入一个 ActiveRecord 模型,我写了一个 gem 将数据导入到你的数据库中。例如:
importer = Importer.new(Widget)
importer.import(data_source)
有什么好方法可以测试这个宝石吗?我会以某种方式需要连接到一个测试数据库并创建一个测试模型。谢谢!
如果你传入一个 ActiveRecord 模型,我写了一个 gem 将数据导入到你的数据库中。例如:
importer = Importer.new(Widget)
importer.import(data_source)
有什么好方法可以测试这个宝石吗?我会以某种方式需要连接到一个测试数据库并创建一个测试模型。谢谢!
大部分灵感来自这篇文章: http ://blog.markstarkman.com/blog/2013/01/23/using-sqlite-to-test-active-record-models/
首先,在您的 gemspec 中,您可以添加 ActiveRecord 和 sqlite3 作为依赖项,如下所示:
spec.add_development_dependency "activerecord", "~> 4.0.0"
spec.add_development_dependency "sqlite3"
然后在 spec/schema.rb 中,你可以像这样定义你的模式:
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
然后您可以在 models.rb 文件中创建模型:
class User < ActiveRecord::Base
end
在您的 spec_helper.rb 中,您想要连接到内存中的 sqlite 数据库、加载模式并需要模型:
require 'active_record'
ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
load File.dirname(__FILE__) + '/schema.rb'
require File.dirname(__FILE__) + '/models.rb'