首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Rails Rspec Docker环境中启用事务性fixture时,Selenium Chrome看不到数据库更改

在Rails Rspec Docker环境中启用事务性fixture时,Selenium Chrome无法看到数据库更改的原因是因为Selenium Chrome运行在一个独立的浏览器环境中,无法直接访问到Rails应用程序的数据库。

解决这个问题的方法是使用DatabaseCleaner gem来清理数据库,并确保在测试运行期间正确配置和管理数据库事务。

以下是解决该问题的步骤:

  1. 在Gemfile中添加DatabaseCleaner gem的依赖:
代码语言:txt
复制
group :test do
  gem 'database_cleaner'
end
  1. 在rails_helper.rb文件中配置DatabaseCleaner:
代码语言:txt
复制
RSpec.configure do |config|
  config.use_transactional_fixtures = false

  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end

  config.around(:each) do |example|
    DatabaseCleaner.cleaning do
      example.run
    end
  end
end
  1. 在spec_helper.rb文件中配置Capybara和Selenium Chrome:
代码语言:txt
复制
require 'capybara/rspec'
require 'selenium-webdriver'

Capybara.register_driver :selenium_chrome do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('--headless')
  options.add_argument('--no-sandbox')
  options.add_argument('--disable-dev-shm-usage')
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end

Capybara.javascript_driver = :selenium_chrome
  1. 在需要使用Selenium Chrome的测试中,使用js: true标记来启用JavaScript驱动:
代码语言:txt
复制
RSpec.describe 'Some feature', js: true do
  # 测试代码
end

通过以上步骤,你可以在Rails Rspec Docker环境中启用事务性fixture,并确保Selenium Chrome能够看到数据库更改。请注意,这只是一种解决方法,具体的实现可能因项目配置和需求而有所不同。

关于腾讯云的相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,我无法提供相关链接。但你可以通过访问腾讯云官方网站,查找与云计算、数据库、服务器运维等相关的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券