【发布时间】:2014-02-24 23:14:15
【问题描述】:
我在我的 rails 应用程序中加入了 database_cleaner gem。遵循 git repo 中给出的示例,并在 spec_helper 中包含以下代码:
方法 1
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end
当我运行rspec 时,我得到错误NoMethodError:undefined method 'cleaning' for DatabaseCleaner:Module。
所以我做了一些研究,发现我可以用这样的东西替换上面的 config.around 块:
方法二
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
或
方法 3
config.around(:each) do |example|
DatabaseCleaner.start
example.run
DatabaseCleaner.clean
end
方法 2 和 3 都很好。
我还查看了 database_cleaner 的 git repo,发现 cleaning 方法确实存在,代码如下:
def cleaning(&block)
start
yield
clean
end
这与我在示例 3 中所做的完全相同。如果它确实存在,那么为什么它无法访问?我在这里错过了什么吗?还要设置吗? 还是方法 2 或 3 更可取?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 rspec rspec-rails database-cleaner