我在运行 MySQL 的 Rails 站点上使用 Capybara 和 Poltergeist 运行自动化测试。
我在运行这个自动化套件时看到它在哪里提交“数据”插入,但是 DatabaseCleaner 似乎什么也没做,运行它时我也没有收到任何错误。
(我确保也安装了 gem)。这是我第一次使用 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。