以下测试第一次通过(之后rake db:test:prepare
)但失败在后续运行中给出错误。
Capybara::ElementNotFound:无法找到 css“#sale_payment_btn”
require "test_helper"
DatabaseCleaner.strategy = :transaction
class SaleFeatureTest < Capybara::Rails::TestCase
include Warden::Test::Helpers
Warden.test_mode!
self.use_transactional_fixtures = false
setup do
login_as users(:admin), scope: :user
Capybara.current_driver = :selenium #:webkit
DatabaseCleaner.start
end
teardown do
DatabaseCleaner.clean
Warden.test_reset!
end
test "Sale" do
visit(new_sale_path) # create new sale and redirect to it
assert page.has_css?('#sale_payment_btn') # gave error at second time
find(:css, '#sale_payment_btn').click # this create payment
end
当我使用硒和铬时,我可以看到销售的 ID。我注意到后续测试的 ID 相同。IE980190963
我的理论是
database_cleaner
未按预期运行。(虽然我在test.log
文件中看到了 DB 清理 sql 命令,但我看到数据仍保留在数据库中)visit
不会创建新的(尽管我使用了 minitest ,但@sale
正如这里所说),因为没有渲染(首次运行时#sal_payment_btn
已经有销售)。payment
我现在正在拉头发半天。我努力了
webkit
司机- 不同的清洁策略
truncation
,deletion
我仍然无法通过第二次测试。手动测试运行正常。
我在哪里做错了什么?
PS我正在使用以下宝石
minitest-rails-capybara
selenium-webdriver
chromedriver-helper
database_cleaner
minitest-around
pg
我已阅读以下内容