2016-06-22 2 views
0

У меня есть это в моем тесте:RSpec, капибары Javascript драйвер

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

Когда я запускаю тест без :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">]> 

Но когда я запускаю этот тест с :js, я получил это:

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 

Я использую webkit как js driver:

Capybara.javascript_driver = :webkit 
+0

Что вы хотите сказать? –

ответ

1

У вас не отключено транзакционное тестирование, поэтому объекты, созданные в тестовом потоке, не отображаются в потоке приложений. Вам необходимо прочитать раздел Transactions and Database Setup Capybara README, а затем сконфигурировать что-то вроде database_cleaner для управления стратегиями переключения баз данных для вас

Смежные вопросы