2016-06-22 18 views
0

ich dies in meinem Test haben:rspec, Capybara Javascript Treiber

let!(:user) { create(:user) } 

Wenn ich laufen Test ohne :js

def create 
    11:  byebug 
=> 12:  if @user = login(params[:email], params[:password]) 
    13:  logger.info "--------------" 
    14:  logger.info "found user" 
    15:  redirect_back_or_to root_path, notice: t(:log_in_is_successful_notice) 
    16:  else 
(byebug) User.all 
#<ActiveRecord::Relation [#<User id: 291, email: "[email protected]", crypted_password: "$2a$10$rOKscDDidaf93p/e9IOceOCGozns5AJ2zSLMO68jRZO...", created_at: "2016-06-22 20:15:55", updated_at: "2016-06-22 20:15:55", salt: "qpSR5US81thfoTn8pphQ", remember_me_token: nil, remember_me_token_expires_at: nil, reset_password_token: nil, reset_password_token_expires_at: nil, reset_password_email_sent_at: nil, current_block_id: nil, locale: "ru">]> 

Aber wenn ich diesen Test mit :js laufen, ich habe diese:

11:  byebug 
=> 12:  if @user = login(params[:email], params[:password]) 
    13:  logger.info "--------------" 
    14:  logger.info "found user" 
    15:  redirect_back_or_to root_path, notice: t(:log_in_is_successful_notice) 
    16:  else 
(byebug) User.all 
#<ActiveRecord::Relation []> 
(byebug) User.all.take 
nil 

Ich benutze webkit als js-Treiber:

Capybara.javascript_driver = :webkit 
+0

Was ist Ihre Frage? –

Antwort

1

Sie haben die Transaktionsprüfung nicht deaktiviert, sodass in Ihrem Test-Thread erstellte Objekte in Ihrem App-Thread nicht sichtbar sind. Sie müssen die Abschnitt der Capybara README lesen, und konfigurieren Sie dann etwas wie database_cleaner zu handhaben Datenbank-Strategien für Sie wechseln

Verwandte Themen