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た let 変数である必要があると確信しています。deal

私が理解できないのは、なぜこれがまったく問題にならないのかということRackTestです...ここで欠けている追加の構成はありますか?

と を使用RSpec 2.8.0してRails 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 に答える