无法使用Selenium,Capybara-webkit进行测试; RackTest工作正常

时间:2012-02-10 01:15:07

标签: ruby-on-rails-3 selenium capybara rspec2 capybara-webkit

我有这个集成规范:

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

我无论如何都无法找到堆栈跟踪,但我有理由相信nil:NilClass应该是之前定义的deal let变量。

我无法理解的是为什么这对RackTest来说根本不是问题...是否有一些我在这里缺少的额外配置?

我正在使用RSpec 2.8.0Rails 3.1.1。如果您需要查看任何其他文件,请与我们联系。

1 个答案:

答案 0 :(得分: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