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