ruby-on-rails - 用于测试 Rails 应用程序的 Rspec 选项

标签 ruby-on-rails rspec spork poltergeist

运行规范时,我也会获取数据库事务的所有输出:

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

最佳答案

在用于测试的环境初始值设定项 (config/environments/test.rb) 中,configure正确的记录器级别:

config.logger.level = Logger::FATAL

关于ruby-on-rails - 用于测试 Rails 应用程序的 Rspec 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13992683/

相关文章:

ruby-on-rails - 在Rails中未定义的局部变量或方法 `welcome_goodbye_path'?

ruby-on-rails - Ruby:在运行时观察方法(重新)定义

rspec-rails - Spork 无法加载此类文件?

ios - 两个 Pusher 应用程序之间可以进行私有(private) channel 通信吗

html - HAML Twitter Bootstrap 选项卡不能正常工作 Ruby on Rails

ruby-on-rails - 如何使用 RSpec 测试这种销毁操作?

ruby - 如何检查对从 rspec 中的构造函数调用的方法的调用?

ruby-on-rails - 无法弄清楚这些方法的结束

ruby-on-rails - 为什么 rspec 不在 Guard/Spork 启动时运行?

testing - #<RSpec::Core::Configuration 的未定义方法 `generators'