隔离测试AR模型?

时间:2011-11-20 09:00:27

标签: ruby-on-rails-3 activerecord rspec

我正在尝试重新构建模型规范以单独测试它(将ActiveRecord视为第三方),但是我在加载模型时遇到问题,因此我可以将AR内容存根...

所以,我一直在做的是:

应用/模型/ city.rb:

class City < ActiveRecord::Base
  # ...
end

规格/型号/ city_spec.rb:

require 'spec_helper'
describe City do
  # ...
end

默认spec_helper加载Rails,这是我想要避免的(慢)。我试过这样做:

应用/模型/ city.rb:

require 'active_record'
class City < ActiveRecord::Base
  # ...
end

规格/型号/ 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.newActiveRecord::ConnectionNotEstablished: ActiveRecord::ConnectionNotEstablished

之类的内容时,会出现问题

如果在不加载Rails的情况下加载我的City模型,我该怎么办?这样我就可以删除AR位?

我正在使用ruby 1.9.3rails 3.1.1

1 个答案:

答案 0 :(得分:0)

您是否尝试过查看mock_model

这就像一个ActiveRecord模型,但不与数据库通信,因此会更快。