我有一个 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/