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