【发布时间】:2011-11-20 09:00:26
【问题描述】:
我正在尝试重新构建模型规范以单独对其进行测试(将 ActiveRecord 视为第三方),但是我在加载模型时遇到了问题,因此我可以删除 AR 内容...
所以,我一直在做的是:
app/model/city.rb:
class City < ActiveRecord::Base
# ...
end
spec/model/city_spec.rb:
require 'spec_helper'
describe City do
# ...
end
默认spec_helper 加载Rails,这是我试图避免的(慢)。我试过这样做:
app/model/city.rb:
require 'active_record'
class City < ActiveRecord::Base
# ...
end
spec/model/city_spec.rb:
require 'spec_helper_lite'
describe City do
# ...
end
... 其中spec_helper_lite 中只有require 'pry'(用于调试);它确实不加载 Rails。但是,运行具有此更改的规范并检查 City 会给我两个不同的结果。
前者给我:City(id: integer, created_at: datetime, updated_at: datetime, name: string)
后者给我:#<ActiveRecord::Aggregations::ClassMethods:0x3fc61647de40>
当我尝试调用 City.new: ActiveRecord::ConnectionNotEstablished: ActiveRecord::ConnectionNotEstablished 之类的东西时,这会导致问题
我需要做什么才能在不加载 Rails 的情况下加载我的 City 模型,这样我就可以删除 AR 位?
我正在使用ruby 1.9.3 和rails 3.1.1。
【问题讨论】:
-
如果您仍在寻找答案,请查看此要点 gist.github.com/2068977 仅加载 AR 并建立数据库连接
标签: ruby-on-rails-3 activerecord rspec