gpt4 book ai didi

mysql - DatabaseCleaner 不适用于 Capybara 自动化测试

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:26 26 4
gpt4 key购买 nike

我在 MySQL 上运行的 Rails 站点上使用 Capybara 和 Poltergeist 运行自动化测试。

我看到它在运行这个自动化套件时提交“数据”插入的位置,但 DatabaseCleaner 似乎什么都不做,我在运行它时也没有收到任何错误。

(我确保也安装了 gems)。这是我第一次使用 DatabaseCleaner 运行,但似乎没有任何效果。

rails_helper 文件的相关部分:

RSpec.configure do |config|

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

config.before(:each) do
DatabaseCleaner.strategy = :transaction
end

config.before(:each, :js => true) do
DatabaseCleaner.strategy = :truncation
end

config.before(:each) do
DatabaseCleaner.start
end

config.after(:each) do
DatabaseCleaner.clean
end
end

另外,我确保 config.use_transactional_fixtures = false

我的 test_helper.rb 文件也没什么特别的:

#Load up Capybara/Rspec
require 'rails_helper'
require 'rspec'
require 'capybara/rspec'
require 'capybara'
require 'capybara/dsl'

#Load up Poltergeist
require 'capybara/poltergeist'

#Set JS Supported Driver
Capybara.javascript_driver = :poltergeist

最后是一个示例脚本,它基本上通过本地运行的 Rails 网站并创建记录。这很简单,但我只是以此为例。自动化测试各司其职。

require 'test_helper'
describe "Test", :type => :feature, :js => true do
it 'Add Widget' do
visit ('/')
fill_in('user_email', :with => 'test@test.com')
fill_in('user_password', :with => 'p@ssword')
click_button('Log in')
click_link('Tools')
expect(page).to have_content 'Tools'
click_link('Stuff')
expect(page).to have_content 'Stuff'
click_link('Create New Thingy')
expect(page).to have_content 'New Thingy'
fill_in('thingy_name', :with => 'Name for a Thing!')
click_button('Create Thing!')
end
end

我是不是漏掉了什么?运行时我没有收到任何错误,但数据没有被删除。

我正在运行 MySQL 5.6.26 和 Rails 4.0.2。

最佳答案

默认情况下,database_cleaner 将为正在运行其测试的应用程序清理测试数据库。如果您的集成规范中的请求将转到其他应用程序,而不是针对此测试数据库运行,那么它不会对该其他数据库执行任何操作(它甚至不知道它的存在)。

你可以给数据库清理器额外的数据库来清理。如果您的 database.yml 使用键 :integration 列出了其他数据库的详细信息,即它包含类似

的内容
integration:
adapter: mysql
database: some_db
...

那么你可以使用

DatabaseCleaner[:active_record, { :connection => :integration }].strategy = :truncation

指定此数据库在调用 DatabaseCleaner.clean 时也应被截断。这当然会在每次测试运行时从该数据库中删除所有内容

关于mysql - DatabaseCleaner 不适用于 Capybara 自动化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37737423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com