在Rails Rspec Docker环境中启用事务性fixture时,Selenium Chrome无法看到数据库更改的原因是因为Selenium Chrome运行在一个独立的浏览器环境中,无法直接访问到Rails应用程序的数据库。
解决这个问题的方法是使用DatabaseCleaner gem来清理数据库,并确保在测试运行期间正确配置和管理数据库事务。
以下是解决该问题的步骤:
group :test do
gem 'database_cleaner'
end
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
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
js: true
标记来启用JavaScript驱动:RSpec.describe 'Some feature', js: true do
# 测试代码
end
通过以上步骤,你可以在Rails Rspec Docker环境中启用事务性fixture,并确保Selenium Chrome能够看到数据库更改。请注意,这只是一种解决方法,具体的实现可能因项目配置和需求而有所不同。
关于腾讯云的相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,我无法提供相关链接。但你可以通过访问腾讯云官方网站,查找与云计算、数据库、服务器运维等相关的产品和服务。
领取专属 10元无门槛券
手把手带您无忧上云