2016-11-10 6 views
0

上RSPECと再作成、テストDBテスト用スキーマのテーブルID(Postgresを使用)だから、いくつかの実行の後にuseridのような何かの2894を持っているかもしれません。リセットテーブルIDとRailsの

データベースクリーナーを使用して、後続の実行の間にDBをクリーニングします。以下を参照してください。

rspec実行間でテーブルIDを直接リセットする方法はありますか?私が以前に働いていた会社は、アプリでそれをやったが、私は気づいていない。

#1がオプションでない場合、実行の間にテストDBを削除して再作成できますか?

RSpec.configure do |config| 
    config.before(:suite) do 
    DatabaseCleaner.clean_with(:deletion) 
    end 

    config.before(:each) do 
    DatabaseCleaner.strategy = :transaction 
    end 

    config.before(:each, js: true) do 
    DatabaseCleaner.strategy = :deletion 
    end 

    config.before(:each) do 
    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 
end 

答えて

1

私はDatabaseCleaner gemも使用していますが、同じ問題は発生しません(代わりにmysqlを使用しています)。これはあなたのケースで役立ちますが、私の構成を試してみる価値であるかどう

わからない:

RSpec.configure do |config| 
    config.before(:suite) do 
    DatabaseCleaner.clean_with(:truncation) 
    Rails.application.load_seed 
    end 

    config.before(:each) do 
    DatabaseCleaner.strategy = :transaction 
    end 

    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 

マイrails_helper.rbを

require 'support/database_cleaner' 

RSpec.configure do |config| 
    config.use_transactional_fixtures = false