cabybara-webkit + rspec: записи недоступны - PullRequest
1 голос
/ 31 августа 2011

Я новичок в интеграционном тестировании, хотя я провел много юнит-тестов для своих моделей и контроллеров.Но теперь я хочу протестировать весь стек.(Я не хочу использовать Cucumber, так как нет клиента, и я могу читать код)

Здесь моя (упрощенная) спецификация

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 в моем конфиге, он снова будет работать, но это нарушит множество других тестов.Есть ли другое решение, или я могу отключить транзакцию транзакции только для моих интеграционных тестов?

Спасибо за чтение!:)

1 Ответ

1 голос
/ 31 августа 2011

Вам необходимо установить use_transactional_fixtures = false для интеграционных тестов. Как вы обнаружили, это вызывает проблемы для других тестов, которые предполагают, что ваши таблицы пустые для начала.

Вы можете попробовать гем database_cleaner . Типичная конфигурация в spec_helper будет выглядеть так:

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

  c.after(:suite) do
    DatabaseCleaner.clean
  end
end
...