2012-12-21 14 views
5

Durante l'esecuzione di una specifica sto ottenendo tutto l'output della transazione del database così:Opzioni RSpec per il test applicazione Rails

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" = '[email protected]' 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", "[email protected]"], ["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 

Questo è di gran lunga troppo rumore! Come posso disabilitare/ridurre?

Di seguito è il mio spec_helper se aiuta.

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 

risposta

2

In te ambiente di inizializzazione per la prova (config/ambienti/test.rb), configure corretto livello logger:

config.logger.level = Logger::FATAL

1

Parte del problema deriva probabilmente da Poltergeist essere utilizzato come Capybara javascript conducente. Ho riscontrato un problema simile durante l'utilizzo di capybara-webkit. Provare a utilizzare questa sintassi:

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

Questo sarebbe andare nel vostro spec_helper, in sostituzione di questa linea: . Ciò potrebbe impedire i messaggi di registro che si riferiscono al rendering.

Ho la sensazione che i messaggi sulla base di dati può essere provenienti da Spork, come ho utilizzato ampiamente Rspec senza Spork e non vedo quei messaggi. Puoi provare a verificare se esiste un'opzione per Spork per disabilitare i messaggi di log/stdout?

+0

Grazie Batkins ma sempre la stessa. E sì, ho riavviato l'app prima di controllare. Cercherò anche in spork o poltergeist. – Lee

+0

Prova questa riga: 'Capybara :: Poltergeist :: Driver.new (app,: stdout => nil)'. Questo è il mio suggerimento finale, poiché questa era la sintassi di capybara-webkit (sembrava che fosse ': logger' invece di': stdout' for 'poltergeist', ma forse non sono corretto). – Batkins

+0

Boo Hoo. Ancora nessun cambiamento. Continuerò a scavare. TY – Lee

Problemi correlati