2012-02-10 77 views
2

我有這樣的整合規格:無法使用Selenium,Capybara-webkit進行測試; RackTest工作正常

feature "When buying a deal, a user" do 
    let(:current_market) { Factory.create(:market) } 
    let(:deal) { Factory.create(:deal_with_products, market: current_market) } 

    scenario "can change quanitity and see an updated total" do 
    visit_checkout_for_product deal.products.first 
    # ... 
    end 

    # ... 
end 

def visit_checkout_for_product(product) 
    visit deal_path current_market, product.deal 
    choose product.title 
    click_button 'buy now' 
end 

這與RackTest奇妙的作品,但是當我改變規格到:

scenario "can change quanitity and see an updated total", js: true do 
    visit_checkout_for_product deal.products.first 
    # ... 
    end 

我的測試中突破,給我一個500 Internal Server錯誤,像這樣:

enter image description here

我似乎無法找到反正拿到STA CK跟蹤,但我確信nil:NilClass應該是deal讓我們先定義變量。

我不明白的是爲什麼這不是一個問題,RackTest ...有一些額外的配置,我錯過了嗎?我使用RSpec 2.8.0Rails 3.1.1。如果您需要查看其他文件,請告訴我。

回答

3

問題是database_cleaner,配置不正確,因爲它正在運行Selenium/capybara-webkit測試之前擦除我的測試數據。這裏是我現在使用的配置,允許一切都通過:

DatabaseCleaner.strategy = :truncation 

RSpec.configure do |config| 
    config.use_transactional_fixtures = false 
    config.before(:each) { DatabaseCleaner.start } 
    config.after(:each) { DatabaseCleaner.clean } 
end 
+1

謝謝!有同樣的問題。我正在使用交易。改爲截斷修復了它。 – jacklin 2012-10-25 18:21:20

相關問題