我有一个 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 规范。
# 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
我可以puts
在测试中的书,它会被发现。
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
我也尝试过这种共享连接方法,但似乎也无法解决问题。
还有什么可能是错的?