capybara-webkit + rspec:记录不可用

时间:2011-08-30 21:06:30

标签: ruby-on-rails rspec integration-testing acceptance-testing

我是集成测试的新手,虽然我已经为我的模型和控制器做了很多单元测试。但现在我想测试整个堆栈。 (我不想使用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,它会再次运行,但这会打破很多其他测试。是否有其他解决方案或者我可以仅为我的集成测试禁用transactional_fixtures吗?

感谢阅读! :)

1 个答案:

答案 0 :(得分:1)

您需要为集成测试设置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