轨道上的红宝石 - MiniTest,Capybara,Fixture,Database_Cleaner第二次未通过



以下测试第一次通过(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 是相同的。即 980190963

我的理论是

  1. database_cleaner无法按预期运行。(虽然我看到数据库清理test.log文件上的sql命令,但我看到数据保留在数据库中)

  2. visit不会创建新的@sale(如此处所述,尽管我使用 minitest),因为#sal_payment_btn没有呈现(销售在第一次运行时已经payment)。

我现在把头发拉了半天。我试过了

  • webkit驱动程序
  • 不同的清洁策略truncationdeletion

而且我仍然无法在第二次运行时通过测试。它在手动测试中运行正常。

我做错了

什么,哪里做错了?

附言我正在使用以下宝石

minitest-rails-capybara
selenium-webdriver
chromedriver-helper
database_cleaner
minitest-around
pg

我已阅读以下内容

  • http://blog.berylliumwork.com/2013/07/rails-4-devise-3-minitest-and-capybara.html
  • 数据库清理程序在最小测试轨道中不起作用
  • Rails minitest,数据库清理器如何转use_transactional_fixtures = false

我已经确认问题出在我database_cleaner的设置上。

短版本

:transaction策略不适用于我的设置cucumber + webkit/selenium .改为:deletion策略。

我学到了什么

看来我学得不够。我在寻找答案时发现了以下内容。

  1. 有人问为什么数据库清理器事务策略不适用于Cucumber和Selenium? - 没有答案

  2. 如何为黄瓜和RSpec的Rails设置database_cleaner

    :transaction策略不适用于硒

  3. database_cleaner自述文件指出,:transaction策略要求做更多的工作

    但是,如果您最终需要在测试中使用多个数据库连接(即您的测试在与应用程序不同的进程中运行),那么使用此策略将变得更加困难

其他值得一读的内容

  • 为什么要使用数据库清理程序的deletion策略
  • 最推荐的设置database_cleaner的方法与railsrspeccapybaraselenium - http://devblog.avdi.org/2012/08/31/configuring-database_cleaner-with-rails-rspec-capybara-and-selenium/
  • 用于用户登录的Rails 4,Devise 3,MiniTest和Capybara。

相关内容

  • 没有找到相关文章

最新更新