Ste*_*ham 8 ruby-on-rails-plugins spork ruby-on-rails-3
我的Rails 3.1应用程序中有以下spec_helper.rb文件.我正在使用Spork加载环境以便进行测试.在将Spork加入混合物之前,我的所有测试都有效.添加spork之后,测试数据库在测试运行之间没有得到正确的清除,这导致了我的一些期望.
按照其他说明,我将database_cleaner添加到下面列出的代码中; 但是,现在,开发数据库以及测试数据库正在被清理.ENV ["RAILS_ENV"]呼叫在此呼叫期间返回测试.
有没有办法显式限制对DatabaseCleaner.clean_with(:truncation)的调用只影响测试数据库?
require 'rubygems'
require 'spork'
Spork.prefork do
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'shoulda/matchers/integrations/rspec'
require 'database_cleaner'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.mock_with :mocha
config.formatter = 'documentation'
config.use_transactional_fixtures = true
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
end
Spork.each_run do
FactoryGirl.reload
end
Run Code Online (Sandbox Code Playgroud)
更新:这是我的database.yml文件
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
Run Code Online (Sandbox Code Playgroud)
此外,我通过将clean_with调用移动到before(:each)部分来解决基本问题,但这会显着减慢测试运行速度.
您是否尝试过搬出ENV["RAILS_ENV"] ||= 'test'街区Spork.prefork?
你确定 Spork 导致你的数据库没有被清理吗?如果您使用 RSpec 的事务装置,唯一可能导致这种情况的事情是在before(:all)块内使用工厂。您可以清理after(:all)块中的数据并摆脱DatabaseCleaner。
顺便说一句,如果您使用截断策略,则无需运行DatabaseCleaner.start.
| 归档时间: |
|
| 查看次数: |
2644 次 |
| 最近记录: |