2015-11-05 105 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,但我寧願解決這個問題。這是我失蹤的水豚配置嗎?免責聲明:使用Rails 2.3RSpec 1.3

回答

2

你不告訴你正在使用的驅動程序與水豚,但一般使用水豚當你不應該使用事務處理測試來(是有可能的解決辦法,以允許它,但他們都有副作用)。請參閱transactions and database setup,然後查看截斷的database_cleaner gem - 這裏有一篇關於它的博客文章,該文章應該與您使用的寶石的年齡相符 - http://devblog.avdi.org/2012/08/31/configuring-database_cleaner-with-rails-rspec-capybara-and-selenium/

+0

如同,在其他地方預先完成整個設置? – Mahoni

+0

我添加了一篇關於它的博客文章的鏈接,該鏈接應該適合您正在使用的rails和rspec的時代 –