2010-04-26 70 views
0

我尝试了rspec,并且当它似乎没有加载我知道存在的db记录时立即撞墙。这是我相当简单的规格(还没有测试)。Rspec-rails似乎没有找到我的模型

require File.expand_path(File.dirname(__FILE__) + '../spec_helper') 

describe SomeModel do 

    before :each do 
    @user1 = User.find(1) 
    @user2 = User.find(2) 
    end 

    it "should do something fancy" 
end 

我得到一个ActiveRecord::RecordNotFound例外,称它无法找到用户瓦特/ ID = 1个或ID = 2,这是我知道的一个事实存在的。我将测试数据库和开发数据库都设置为指向database.yml中的相同模式,所以这不应该是数据库混淆。在安装gems(rspec,rspec-rails)和gem.config之后,我也运行script/generate rspec environment.rb和test.rb.任何想法我失踪?谢谢。

编辑

看来我是用跑的rake spec:models测试,清空数据库,并因此被发现没有记录。当我使用% spec spec/models/some_model_spec.rb时,一切都按预期工作。

+0

嗯,是不是RSpec预期夹具设置?我也是这样rspec_model生成器,但我不知道这些是否需要你在做什么 – 2010-04-26 07:26:28

+0

可能,我会检查出来 - 谢谢。 – sa125 2010-04-26 07:27:21

回答

2

不应该依赖于测试数据存在于您的数据库中,因为它可以(并且通常是!)改变。其次,不应该加入您的测试和开发数据库在同一个数据库。测试应该在纯数据库上运行,而不是由您的开发工作所损坏。

什么你应该做的是在灯具的形式测试,或通过使用诸如factory_girlmachinist一个工具,专门设置数据。