【问题标题】:Can't get tests working with Selenium, Capybara-webkit; RackTest works fine无法使用 Selenium、Capybara-webkit 进行测试;机架测试工作正常
【发布时间】:2012-03-02 13:07:04
【问题描述】:

我有这个集成规范:

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 错误,如下所示:

我似乎无法找到堆栈跟踪,但我有理由确定 nil:NilClass 应该是前面定义的 deal let 变量。

我无法理解的是,为什么 RackTest 完全没有问题...我在这里缺少一些额外的配置吗?

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

【问题讨论】:

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


    【解决方案1】:

    问题是 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
    

    【讨论】:

    • 谢谢!有同样的问题。我使用的是事务性的。更改为截断修复了它。
    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 2018-11-08
    • 2017-01-24
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 2019-12-01
    • 2014-04-04
    相关资源
    最近更新 更多