2

我有这个集成规范:

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。如果您需要查看任何其他文件,请告诉我。

4

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
于 2012-02-10T19:26:04.017 回答