5

运行规范时,我也得到了数据库事务的所有输出:

lee$ rspec spec/mailers/
Connecting to database specified by database.yml
   (0.1ms)  BEGIN
  User Exists (0.7ms)  SELECT 1 AS one FROM "users" WHERE "users"."email" = 'user@example.name' LIMIT 1
  User Exists (0.4ms)  SELECT 1 AS one FROM "users" WHERE "users"."auth_token" = '8bF72xsaxsSsidLvA1uD9Q' LIMIT 1
  SQL (2.3ms)  INSERT INTO "users" ("auth_token", "created_at", "email", "first_name", "last_name", "password_digest", "password_reset_token", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING "id"  [["auth_token", "8bF70xsaEsSsidLvA1uD9Q"], ["created_at", Fri, 21 Dec 2012 14:55:40 UTC +00:00], ["email", "michale@swift.name"], ["first_name", nil], ["last_name", nil], ["password_digest", "$2a$10$KXKLprkU/Irp30LoB8M.DuSwLV9bq9P3C7hIAO4yNShPrDE.NmHU."], ["password_reset_token", nil], ["updated_at", Fri, 21 Dec 2012 14:55:40 UTC +00:00]]
   (1.6ms)  COMMIT
  Rendered user_mailer/customer_sigup_confirmation.html.erb (0.8ms)
  Rendered user_mailer/customer_sigup_confirmation.text.erb (0.4ms)
.

Finished in 0.41419 seconds
1 example, 0 failures

Randomized with seed 6071

这噪音太大了!如何禁用/减少它?

如果有帮助,下面是我的 spec_helper。

require 'rubygems'
require 'spork'
#uncomment the following line to use spork with the debugger
# require 'spork/ext/ruby-debug'

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'
  require 'rspec/autorun'
  require 'capybara/rspec'
  require 'capybara/poltergeist'

  Capybara.javascript_driver = :poltergeist

  # 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

    # 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

    # If true, the base class of anonymous controllers will be inferred
    # automatically. This will be the default behavior in future versions of
    # rspec-rails.
    config.infer_base_class_for_anonymous_controllers = false

    # Run specs in random order to surface order dependencies. If you find an
    # order dependency and want to debug it, you can fix the order by providing
    # the seed, which is printed after each run.
    #     --seed 1234
    config.order = "random"


    # Include Factory Girl syntax to simplify calls to factories
    config.include FactoryGirl::Syntax::Methods

    # Add Support Modules
    # config.include LoginMacros
    config.include MailerMacros
    config.before(:each) { reset_email }

    config.treat_symbols_as_metadata_keys_with_true_values = true
    config.filter_run :focus => true
    config.run_all_when_everything_filtered = true

  end

end

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

  class ActiveRecord::Base
    mattr_accessor :shared_connection
    @@shared_connection = nil

    def self.connection
      @@shared_connection || retrieve_connection
    end
  end

  # Forces all threads to share the same connection. This works on
  # Capybara because it starts the web server in a thread.
  ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection

end
4

2 回答 2

2

在用于测试的环境初始化程序(config/environments/test.rb)中,配置正确的记录器级别:

config.logger.level = Logger::FATAL

于 2012-12-21T22:00:30.277 回答
1

部分问题可能源于Poltergeist被用作Capybarajavascript 驱动程序。我在使用时遇到了类似的问题capybara-webkit。尝试使用以下语法:

Capybara.register_driver :poltergeist_silent do |app|
  Capybara::Poltergeist::Driver.new(app, :logger => nil)
end
Capybara.javascript_driver = :poltergeist_silent

这将进入您的spec_helper,替换这一行:Capybara.javascript_driver = :poltergeist。这可能会阻止涉及渲染的日志消息。

我感觉有关数据库的消息可能来自Spork,因为我已经Rspec广泛使用了Spork,但我没有看到这些消息。您能否尝试检查是否有Spork禁用日志/标准输出消息的选项?

于 2012-12-21T15:36:10.200 回答