All*_*ate 14 gem activerecord rspec ruby-on-rails
我正在尝试从Rails 3.2.3应用程序中提取一组模型到gem中,以便它们可以用作应用程序之间的共享接口.
我将模型移动到模块中并将其放在lib/invite_interface/invite.rb中
module InviteInterface
class Invite < ActiveRecord::Base
belongs_to :user
end
def to_json; end;
def from_json; end;
end
Run Code Online (Sandbox Code Playgroud)
我把rspec放到gemfile中,让它成功运行,创建了以下规范:
require 'spec_helper'
describe InviteInterface::EncounterSurvey do
it 'should belong to user' do
subject.should respond_to(:user)
end
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法在模型上执行rspec,因为活动记录/ rspec需要活动连接.
1) InviteInterface::Invite should belong to encounter survey set
Failure/Error: subject.should respond_to(:user)
ActiveRecord::ConnectionNotEstablished:
ActiveRecord::ConnectionNotEstablished
# /Users/justin/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `retrieve_connection'
# /Users/justin/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
# /Users/justin/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
# /Users/justin/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/model_schema.rb:228:in `columns'
# /Users/justin/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/model_schema.rb:243:in `column_defaults'
Run Code Online (Sandbox Code Playgroud)
如何防止ActiveRecord查找数据库连接?
Yur*_*hov 13
无论如何,您需要使用数据库测试库,因此您也可以使用内存中的SQLite数据库进行测试.只需将其添加到spec_helper.rb:
ActiveRecord::Base.establish_connection(:adapter => "sqlite3",
:database => ":memory:")
Run Code Online (Sandbox Code Playgroud)
并按如下方式创建架构:
ActiveRecord::Schema.define do
self.verbose = false
create_table :invites, :force => true do |t|
t.string :text
end
...
end
Run Code Online (Sandbox Code Playgroud)
Att*_*ffy 10
我发现如果你测试你的模型是孤立的,你也可以在定义ActiveRecord连接时尝试利用SQLite3的内存功能来获得非常快的规格:
ActiveRecord::Base.establish_connection(
:adapter => 'sqlite3',
:database => ':memory:'
)
Run Code Online (Sandbox Code Playgroud)
尝试一下,它对我来说就像一个魅力,让我的模型测试得更快.
| 归档时间: |
|
| 查看次数: |
2729 次 |
| 最近记录: |