10

テストの各ステップでは、次の 2 行が発生します。

WARNING:  there is already a transaction in progress
NOTICE:  there is no transaction in progress

トリプルに続くスポークライン:

NOTICE:  there is no transaction in progress
NOTICE:  there is no transaction in progress
NOTICE:  there is no transaction in progress
WARNING:  there is already a transaction in progress
WARNING:  there is already a transaction in progress
WARNING:  there is already a transaction in progress

多分それが重要かどうかはわかりませんが、警告しました。ジェムファイル:

group :test do
  gem 'rspec-rails'
  gem 'factory_girl_rails'
  gem 'spork-rails'
  gem 'capybara'
  gem 'database_cleaner'
end

すべてカスタマイズされているため、開発グループは必要ありません。とにかく役に立ちません。これは spec_helper です。PostgreSQLの機能であることがわかりましたが、修正方法がわかりませんでした。私は援助に感謝します

4

2 に答える 2

11

spec_helper.rb 内

config.use_transactional_examples = false #factoryGirl
config.use_transactional_fixtures = false #fixtures

config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end

database.yml 内

test:
  adapter: postgresql
  encoding: unicode
  host: localhost
  database: myapp_test
  username: my_username
  password:
  allow_concurrency: true
  pool: 5
  min_messages: error

min_messages オプションを設定した場合でも、次のようなコンソール出力が表示される場合があります。

WARNING:  there is already a transaction in progress

ファイルを編集する

/opt/local/var/db/postgresql92/defaultdb/postgresql.conf

次のように設定します。

client_min_messages = error

すべてがスムーズに実行されるはずです。

于 2013-02-06T14:47:15.347 に答える
9

ではspec_helper.rb、これを変更してみます

  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end

これに

  config.before(:suite) do
    DatabaseCleaner.strategy = :truncation
    DatabaseCleaner.clean_with(:truncation)
  end 
于 2012-09-18T17:14:05.723 に答える