2011-11-20 128 views
1

我试图重组模型规格来孤立地测试它(对待ActiveRecord作为第三方),但是我在加载我的模型时遇到了问题,所以我可以删除AR的东西...隔离测试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只有(用于调试);它没有不是加载Rails。然后运行规范并检查City,这给了我两个不同的结果。

前者给我:City(id: integer, created_at: datetime, updated_at: datetime, name: string)

后者给了我:#<ActiveRecord::Aggregations::ClassMethods:0x3fc61647de40>

这会导致问题,当我尝试调用像City.newActiveRecord::ConnectionNotEstablished: ActiveRecord::ConnectionNotEstablished

我有什么,为了做到加载我的City模型而不加载Rails,这样我可以删除AR位?我使用ruby 1.9.3rails 3.1.1

+0

如果您仍然在寻找答案,请查看此要点https://gist.github.com/2068977以仅加载AR并建立数据库连接 – Blastula

回答

0

你试过看看mock_model

这就像一个ActiveRecord模型,但不会与数据库交谈,所以会更快。