Kir*_*rat 21 rspec ruby-on-rails rspec-rails ruby-on-rails-4 database-cleaner
我database_cleaner
在我的rails应用程序中包含了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
Run Code Online (Sandbox Code Playgroud)
当我运行rspec
i get错误时NoMethodError:undefined method 'cleaning' for DatabaseCleaner:Module
.
所以我做了一些研究,发现我可以用以下内容替换config.around
上面的块:
方法2
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
Run Code Online (Sandbox Code Playgroud)
要么
方法3
config.around(:each) do |example|
DatabaseCleaner.start
example.run
DatabaseCleaner.clean
end
Run Code Online (Sandbox Code Playgroud)
方法2和方法3都运行良好.
我还查看了database_cleaner的git repo,发现该cleaning
方法实际存在,并使用以下代码:
def cleaning(&block)
start
yield
clean
end
Run Code Online (Sandbox Code Playgroud)
这与我在例子3中所做的完全相同.如果确实存在那么为什么它不可访问?我在这里错过了一些东西.还有更多设置?或者方法2或3更好?
Kir*_*rat 25
终于找到了答案,
database_cleaner
gem cleaning
刚刚在上周添加了该方法,并且还更新了相同的文档.但是这个更改不适用于我从rubygems.org采购的最新gem版本1.2.0.Approach 1
当我从github
下面获取宝石时,效果非常好:
gem 'database_cleaner', git: 'git@github.com:DatabaseCleaner/database_cleaner.git'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6638 次 |
最近记录: |