1

次のような簡単なテストケースがあります。

describe 'Quiz packs page' do
  before :each do
    FactoryGirl.create(:quiz_pack, :first_in_first_pack).should be_valid
  end
end

it "should have an index page", :js => true do
  visit quiz_packs_path
end

Selenium を使用して quiz_packs_path にアクセスすると、FactoryGirl の特性がインデックス ページのエントリとして表示されないのはなぜですか?

正直なところ、私は FactoryGirl について読みすぎて頭が痛くなりましたが、それでも作成がどのように行われるかはよくわかりません。

役立つ場合は、ここに私のクイズパックがあります。私はこれらのものをたくさん持っているので、FactoryGirl トレイトを使用していることに注意してください。これが問題である場合は、お知らせください。

FactoryGirl.define do
  factory :quiz_pack do
    trait :first_in_first_pack do |f|
      f.pack 1
      f.number 1
      f.image "first_image
    end
  end
end
4

1 に答える 1

5

これは良い質問です。私は常に最初にrspecを適切にセットアップしているので、この問題はありません。しかし、この問題はまだ対処する価値があります。

そして、ここに解決策があります

今回は、コンテンツ「ペイント フェンス」がページにないため、最初の仕様は失敗します。作成されたデータベース レコードは、Selenium テストでは使用できません。これは、仕様が Selenium と互換性のないデータベース トランザクションを使用しているためです。これを修正するには、spec_helper ファイルの config.use_transactional_fixtures 設定を false に設定します。 http://asciicasts.com/episodes/257-request-specs-and-capybara

したがって、これを設定するだけで準備spec_helper.rb完了です。

config.use_transactional_fixtures = false

私は自分のプロジェクトの1つでそれをチェックしましたが、うまく機能します。

さらに、データベース クリーナーは、どのような状況でも常に優先されます。

必要ではありませんが、読むことに興味がある場合は、ここに詳細な議論があります: https://groups.google.com/forum/#!msg/ruby-capybara/JI6JrirL9gM/R6YiXj4gi_UJ

于 2013-04-11T00:45:41.507 に答える