ruby-on-rails - capybara 在功能规范期间找不到数据库记录

标签 ruby-on-rails ruby rspec capybara capybara-webkit

我有一个 JS 功能规范,我正在尝试使用 Capybara Webkit 运行。但是它似乎无法找到我的数据库记录。

有问题的规范看起来像这样

it "should allow pledging to a Hardback level", js: true do
  book = FactoryGirl.create :book
  visit book_path(book)
  click_link "pledge-btn"
end

很遗憾,请求book_path(book) 404s 因为找不到这本书。

如果我取消 :js 标志,测试通过。

我已将 DatabaseCleaner 设置为使用 :truncation 用于 JS 规范 as is the recommended method .

# spec/support/database_cleaner.rb
RSpec.configure do |config|
  config.use_transactional_fixtures = false

  config.before(:suite) do
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do
    DatabaseCleaner.strategy = :transaction
  end

  config.before(:each, :js => true) do
    DatabaseCleaner.strategy = :truncation
  end

  config.before(:each) do
    DatabaseCleaner.start
    DatabaseMetadata.create!(:sanitized_at => DateTime.now) 
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end
end

我可以这本书放在测试中,它会被发现。

it "should allow pledging to a Hardback level", js: true do
  book = FactoryGirl.create :book
  visit book_path(book)
  p Book.first
  # => .. the book instance
  click_link "pledge-btn"
end

我也试过 this shared connection method这似乎也无法解决问题。

还有什么问题?

最佳答案

您可能在 spec_helper.rb 中设置了 config.use_transactional_fixtures = true。这将覆盖您上面的内容。

您想从 spec_helper.rb 中删除这一行,或者将其更改为 false

关于ruby-on-rails - capybara 在功能规范期间找不到数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19836407/

相关文章:

ruby-on-rails - Ruby on Rails : how do you add a class in a link_to helper?

ruby - Sinatra 中的嵌套布局

ruby-on-rails - 无方法错误 : undefined method `username' for true:TrueClass

ruby - Time.now 与 Controller 的 Rails 问题

ruby-on-rails - 当我通过 Rspec 测试 Controller 时如何 stub 参数值

ruby-on-rails - 工厂少女协会自引用父模型

ruby - 在 RSpec 中测试模块

ruby-on-rails - 复制具有关联和回形针附件的 rails 对象

ruby-on-rails - 在 irb 中阅读文档

javascript - 使用 AJAX 更改部分内容