database_cleaner

 

Capybara + Rspec进行测试的时候,如果有一个用例需要创建对象并保存到数据库中

当再一次进行测试的时候,就会提示该对象已经存在,创建失败了

所以要想保证每次测试都能正常执行,需要在每个测试用例执行完毕后将数据库清空

类似于TestUnit中的teardown,这里使用了database_cleaner

 

1. 修改Gemfile,添加database_cleaner

group :development,:test do 

  gem 'sqlite3'

  gem 'rspec-rails', '2.11.0'

  gem 'database_cleaner'

  gem 'capybara','1.1.2'

end

 

2. 在spec/spec_helper.rb文件中增加如下代码

RSpec.configure do |config|
  .
  .
  .
  .
 config.before(:suite) do
    DatabaseCleaner.strategy = :truncation
  end

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

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

 

 参考railscast: http://railscasts.com/episodes/257-request-specs-and-capybara

你可能感兴趣的:(teardown)