0
我对我的Rspec测试套件有一个奇怪的问题。将数据插入到具有唯一约束的表中的所有测试均失败。通过指定行号分别运行失败的测试按预期工作。运行rspec时在空表上的SQLite约束异常
为了调查问题,我在插入导致约束异常的数据之前打印了该表中的行数,并且报告该表为空。
根本没有任何文件中的before :all
。
我正在使用DatabaseCleaner,除了这个问题,似乎清理工作。
例如,运行整个文件时不工作:
describe User
# ...
describe '#follow_location' do
let(:user) { Factory(:user) }
let(:location) { Factory(:location) }
it 'should raise when trying to follow an already followed location' do
puts LocationFollowship.count # => 0
user.followed_locations << location # exception raised
lambda {
user.follow_location location
}.should raise_error User::AlreadyFollowingLocation
end
end
# …
end
编辑: 我能够追查。它必须使用缓存语句来处理Rails。调用ActiveRecord::Base.connection.clear_cache!
使它工作。但是,在spec_helper.rb中添加此片段会导致SQLite异常cannot use a closed statement
。
要显示的任何代码? :) – corroded
你去了;) – fphilipe
你能告诉我们你的工厂吗? :)也许你添加了一个ID字段 – corroded