Ruby on rails 小型测试、水豚、夹具、数据库清洁剂第二次未通过
以下测试第一次通过(在Ruby on rails 小型测试、水豚、夹具、数据库清洁剂第二次未通过,ruby-on-rails,capybara,database-cleaner,Ruby On Rails,Capybara,Database Cleaner,以下测试第一次通过(在rake db:test:prepare之后),但失败,在后续运行中出现错误 Capybara::ElementNotFound:找不到css“#销售#付款_btn” 我读了以下内容 我已经确认问题是我设置的数据库\u cleaner 短版 :事务策略不适用于我的设置cucumber+webkit/selenium。更改为:删除策略 我学到的 我似乎学习不够。我在寻找答案的过程中发现了以下几点 有人问——没有回答 声明 :事务策略不适用于Selenium 声明:事
rake db:test:prepare
之后),但失败,在后续运行中出现错误
Capybara::ElementNotFound:找不到css“#销售#付款_btn”
我读了以下内容
数据库\u cleaner
短版
:事务
策略不适用于我的设置cucumber
+webkit
/selenium
。更改为:删除策略
我学到的
我似乎学习不够。我在寻找答案的过程中发现了以下几点
有人问——没有回答
声明
:事务
策略不适用于Selenium
声明:事务
策略要求更多的工作
但是,如果您最终需要在测试中使用多个数据库连接(即,您的测试运行在与应用程序不同的进程中),那么使用此策略将变得更加困难
其他值得一读的书
- 使用
rails
、rspec
、capybara
和selenium
设置数据库的最推荐方法
我相信rake db:test:prepare
只创建测试数据库,而不运行测试。你能发布你得到的错误吗?是的,我知道它不运行测试,它会清理数据库。阅读您的评论后,我认为我使用minitest
设置的database\u cleaner
不正确,也没有清理数据库。你的意见是什么。
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
minitest-rails-capybara
selenium-webdriver
chromedriver-helper
database_cleaner
minitest-around
pg