所以我在我的测试环境中
现在,在终端,rake db:test:prepare清除db …但不是当我从代码中运行它时
我在features / support / env.rb中有这个:
Before do task :build_all do [ :debug,:release ].each do |t| $build_type = t Rake::Task["db:test:prepare"].reenable Rake::Task["db:test:prepare"].invoke end end end
但是当我的测试运行完毕后,我的数据仍保留在project_test数据库中
这是在我的database.yml中
test: adapter: MysqL encoding: utf8 database: projectname_test username: root password:
我也试过了
db:test:purge
和
db:test:reset
我知道它正在使用我的测试数据库,因为我检查了MysqLWorkbench,它将数据插入到表中……但是在完成时不会删除数据(我必须手动删除它).
当表为空时,测试用例通过
解决方法
你应该用
begin require 'database_cleaner' require 'database_cleaner/cucumber' DatabaseCleaner.strategy = :truncation rescue NameError raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it." end Before do DatabaseCleaner.start end After do |scenario| DatabaseCleaner.clean end