我正在尝试rspec,并且当它似乎没有加载我知道存在的db记录时立即撞墙。这是我相当简单的规范(还没有测试)。
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
异常,说它找不到User w / ID = 1或ID = 2,我知道这个事实存在。我将测试和开发数据库都设置为指向database.yml中的相同模式,因此这不应该是数据库混合。安装gems(rspec,rspec-rails)和gem.config环境.rb和test.rb后,我也运行了script/generate rspec
。知道我错过了什么吗?感谢。
修改
似乎我用rake spec:models
运行了测试,它清空了数据库,因此没有找到任何记录。当我使用% spec spec/models/some_model_spec.rb
时,一切都按预期工作。
答案 0 :(得分:2)
你不应该依赖于数据库中的测试数据,因为它可能(并且经常会!)改变。其次,您不应该在同一个数据库中加入您的测试和开发数据库。测试应在纯数据库上运行,而不是由您的开发工具破坏的数据库。
您应该正在做的事情是以灯具的形式专门为测试设置数据,或者使用factory_girl或machinist等工具。