所以我在我的测试环境中
现在,在终端,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,它将数据插入到表中......但是在完成时不会删除数据(我必须手动删除它)。 当表为空时,测试用例通过
答案 0 :(得分:4)
你应该使用
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
答案 1 :(得分:1)
与RSpec中的测试一样,Cucumber中的场景在事务块中运行,并在场景完成后回滚。数据库中不应存在的任何数据可能都是其他内容遗留下来的。尝试清除数据库。
答案 2 :(得分:0)
关于此问题,但是您是否尝试过快速删除并重新创建数据库?