1

モデルとコントローラーに対して多くの単体テストを実行しましたが、統合テストは初めてです。しかし、今度はスタック全体をテストしたいと思います。(顧客がいなくてコードが読めるので、キュウリは使いたくない)

ここに私の(簡略化された)仕様

describe ArticlesController, "#show" do
  before do
    @article = Factory :article, :title => "Lorem ipsum"
  end

  it "should show the article page" do
    visit article_path(:id => @article)
    page.should have_content("Lorem ipsum")
  end
end

仕様は合格ですが、に追加:js => trueするit "should show the article page", :js => true doと、ActiveRecord::RecordNotFoundがスローされます。設定で無効にするuse_transactional_fixturesと、再び機能しますが、他の多くのテストが失敗します。別の解決策はありますか、または統合テストのためだけにtransactional_fixturesを無効にできますか?

読んでくれてありがとう!:)

4

1 に答える 1

1

use_transactional_fixtures統合テストには = falseを設定する必要があります。おわかりのように、これにより、最初からテーブルが空であると想定する他のテストで問題が発生します。

database_cleaner gemを試すことができます。の典型的な構成は次のspec_helperようになります。

RSpec.configure do |c|
  c.before(:suite) do
    DatabaseCleaner.start
  end

  c.after(:suite) do
    DatabaseCleaner.clean
  end
end
于 2011-08-31T19:41:34.740 に答える