gpt4 book ai didi

ruby-on-rails - rails : Cucumber not cleaning DB

转载 作者:行者123 更新时间:2023-12-04 05:57:02 25 4
gpt4 key购买 nike

我在 cucumber 和数据库事务方面遇到了一些问题 - 特别是,当我运行测试套件时,之后不会清理数据库事务。

我正在使用 spork、postgres 运行 Rails 3.1。

最初 features/support/env.rb 被设置为使用 database_cleaner,但每次调用 db 时都会出现以下错误:

No database specified. Missing argument: database. (ArgumentError) /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/postgresql_adapter.rb:22:in postgresql_connection'
/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:in
new_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:302:in checkout_new_connection'
/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:254:in
block (2 levels) in checkout' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:250:in loop'
/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:250:in
block in checkout' /Users/john/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/monitor.rb:201:in mon_synchronize'
/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:249:in
checkout' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:151:in connection'
/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:388:in
retrieve_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_specification.rb:107:in retrieve_connection'
/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/cucumber-rails-1.0.2/lib/cucumber/rails/hooks/active_record.rb:7:in
connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/active_record/transaction.rb:17:in clean'
/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/base.rb:77:in
clean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb:56:in block in clean'
/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb:56:in
each' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb:56:in clean'
/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/cucumber-rails-1.0.2/lib/cucumber/rails/hooks/database_cleaner.rb:9:in
After'



我尝试恢复到常规交易,但没有任何乐趣。我可以通过控制台(cucumber 环境)访问数据库并创建/删除/检索记录,没有任何问题。下面添加了 config/database.yml、features/support/env.rb、config/environments/cucumber.rb 和 rspec/spec_helper.rb 文件。任何建议都非常感谢 - 这个让我难倒了一段时间:

配置/数据库.yml
default: &defaults
adapter: postgresql
username: rails_dev
password: foobar

development:
<<: *defaults
database: fcct_d

test: &test
<<: *defaults
database: fcct_t

production:
<<: *defaults
database: fcct_p
username: fcct
password: k#1*5Avb3dTa

cucumber:
adapter: postgresql
username: rails_dev
password: foobar
database: fcct_t

功能/支持/ENV.RB
require 'rubygems'
require 'spork'

Spork.prefork do
require 'cucumber/rails'
require 'database_cleaner'
require 'database_cleaner/cucumber'


Capybara.default_selector = :css

ActionController::Base.allow_rescue = false

begin
DatabaseCleaner.strategy = :transaction
rescue NameError
raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end

end

Spork.each_run do
require 'factory_girl'
require File.join(File.dirname(__FILE__), '../../lib/existing_factory/existing_factory.rb')
end

配置/环境/ cucumber .RB

BusinessschoolCorporate::Application.configure do # Settings specified here will take precedence over those in config/application.rb

# The test environment is used exclusively to run your application's

test suite. You never need to work with it otherwise. Remember

that # your test database is "scratch space" for the test suite and is wiped # and recreated between test runs. Don't rely on the data there!
config.cache_classes = true
config.use_transactional_fixtures = true

# Configure static asset server for tests with Cache-Control for performance config.serve_static_assets = true
config.static_cache_control = "public, max-age=3600"

# Log error messages when you accidentally call methods on nil
config.whiny_nils = true

# Show full error reports and disable caching
config.consider_all_requests_local = true
config.action_controller.perform_caching = false

# Raise exceptions instead of rendering exception templates
config.action_dispatch.show_exceptions = false

# Disable request forgery protection in test environment
config.action_controller.allow_forgery_protection = false

# Tell Action Mailer not to deliver emails to the real world. # The :test delivery method accumulates sent emails in the # ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test

# Use SQL instead of Active Record's schema dumper when creating the test database. # This is necessary if your schema can't be completely dumped by the schema dumper, # like if you have constraints or database-specific column types # config.active_record.schema_format = :sql

# Print deprecation notices to the stderr
config.active_support.deprecation = :stderr end



规范/规范_HELPER.RB

require 'rubygems' require 'spork'

Spork.prefork do # Loading more in this block will cause your tests to run faster. However, # if you change any configuration or code from libraries loaded here, you'll # need to restart spork for it take effect. # This file is copied to spec/ when you run 'rails generate rspec:install' ENV["RAILS_ENV"] ||= 'test' require File.expand_path("../../config/environment", FILE) require 'rspec/rails'

# Requires supporting ruby files with custom matchers and macros, etc, # in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/*/.rb")].each {|f| require f}

RSpec.configure do |config| # == Mock Framework # # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: # # config.mock_with :mocha # config.mock_with :flexmock # config.mock_with :rr config.mock_with :rspec

# Remove this line if you're not using ActiveRecord or

ActiveRecord fixtures # config.fixture_path = "#{::Rails.root}/spec/fixtures"

# If you're not using ActiveRecord, or you'd prefer not to run

each of your # examples within a transaction, remove the following line or assign false # instead of true. config.use_transactional_fixtures = true end

end

Spork.each_run do # This code will be run each time you run your specs.

end

最佳答案

对于那些想知道的人 - 这是我的 config/database.yml 文件中有 &defaults 的事实。数据库清理器有一个自己的“默认”调用,它拦截配置信息。

关于ruby-on-rails - rails : Cucumber not cleaning DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7144112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com