私の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
EDIT: 私はそれを追跡することができたファイル全体を実行しているときは動作しません。キャッシュされたステートメントを使用するRailsと関係しています。 ActiveRecord::Base.connection.clear_cache!
を呼び出すと動作します。しかし、このスニペットをspec_helper.rbに追加すると、SQLite例外cannot use a closed statement
が発生します。
表示するコードはありますか? :) – corroded
あなたは行く;) – fphilipe
あなたは私たちにあなたの工場を示すことができますか? :)多分あなたはidフィールドを追加しました – corroded