2015-11-05 1 views
0

Я использую Машинист, чтобы создать свои тестовые пользователь, которые я хочу войти перед каждым испытанием, которое я бег с Капибара:тестов функции Капибара не совершающие транзакций базы данных

include Capybara::DSL 
include ActionController::UrlWriter 

before do 
    SslRequirement.disable_ssl_check = true 
    user = User.make 


    visit new_user_session_path 
    fill_in('username', with: user.email) 
    fill_in('password', with: '12345') 
    click_button('submit') 
end 

it "responds as expected" do 
    # ... 
end 

Теперь, когда пользователь создаются с User.make я могу получить доступ к нему через User.all когда это факт, это не сохраняется в базе данных все же, это происходит потому, что

ActiveRecord::Base.connection.open_transactions == 1 

я могу исправить/взломать это, делая

ActiveRecord::Base.connection.commit_db_transaction 

после User.make, но я предпочел бы исправить это правильно. Является ли это конфигурацией Capybara, которую мне не хватает? Отказ от ответственности: Использование Rails 2.3 и RSpec 1.3

ответ

2

Вы не показываете, какой драйвер вы используете с Капибарой, но, как правило, вы не должны использовать транзакции для тестирования при использовании Capybara (да есть потенциальные обходные пути, чтобы позволить это, но всем они имеют побочные эффекты). См. transactions and database setup, а затем изучите драгоценный камень базы данных с усечением - вот сообщение в блоге об этом, которое должно быть хорошо с возрастом драгоценных камней, которые вы используете, - http://devblog.avdi.org/2012/08/31/configuring-database_cleaner-with-rails-rspec-capybara-and-selenium/

+0

Как и в предыдущей ситуации, выполните все настройки заранее? – Mahoni

+0

Я добавил ссылку на сообщение в блоге об этом, которое должно быть хорошо для возраста рельсов и rspec, которые вы используете –

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