試験用にsqlite
からpg
に切り替えました。私はテスト与えられ、テストテーブルだけで罰金をクリアしながら、IDがつまりそう1に再起動していない、ということに気づい:Postgresテスト環境を使用したRails仕様では、テストテーブルはIDの増分を再起動しませんか?
describe "" do
before do
# some dummy is created
Object.create()
puts "count = #{Object.count}"
puts "last object_id = #{Object.id}"
end
...
end
あなたは多くのテストを実行する場合は、次のような出力が得られます:
count = 1
last object_id = 1
count = 1
last object_id = 1
count = 1
last object_id = 1
count = 1
last object_id = 1
私はこれは私が私のspec_helper
ファイルに必要なだけのものですと仮定します。
count = 1
last object_id = 1
count = 1
last object_id = 2
count = 1
last object_id = 3
count = 1
last object_id = 4
私はそれをテストテーブルをクリアし、それはだように、IDを再起動し、両方に優れていたいと感じる一方で?参考までに、現在のヘルパーファイルは以下の通りです。私はdatabase_cleaner
gemを使用しています。ありがとう!
RSpec.configure do |config|
# Database cleaner set up below
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
# Clean up all jobs specs with truncation
config.before(:each, js: true) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
通常、オブジェクトのIDは実際のテストとは無関係です。したがって、自動インクリメントをリセットする必要はありません。 – Rafal
切り捨て戦略を使用してテストを実行していますか?テストのヘッダーに 'describe" "、js:true"のようなものがあると思いますので、代わりにトランザクション戦略でテストを実行している可能性があります。テスト実行中にテストログを表示できますか?トランザクションROLLBACKまたはトランケートを行うかどうかを明確に確認する必要があります。 – BoraMa