2011-03-13 39 views
1

我正在使用Rspec來測試Rails應用程序。 我有2代表我導入的數據代入(測試和開發數據庫兩者)Rspec不刪除2個特定的表

整個應用程序是依賴於表中的數據,這意味着整個功能是匹配,計算並從該表中的測量數據,並把它變成其他表。

因此,在測試時,刪除這些表的數據沒有意義,但Rspec仍然在從它們中刪除數據。

我的問題是: 我該如何強制Rspec不要從這些表中刪除數據(從來沒有)?

我的規格幫手文件

require 'rubygems' 
require 'spork' 

Spork.prefork do 

end 

Spork.each_run do 

end 


ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

RSpec.configure do |config| 
    config.mock_with :rspec 

    config.fixture_path = "#{::Rails.root}/spec/fixtures" 

    config.use_transactional_fixtures = true 
end 
+0

什麼是您使用的rspec配置(在spec_helper中)?將其粘貼在這裏 – 2011-03-13 17:00:05

+0

我編輯了我的問題。 – KensoDev 2011-03-13 19:02:50

+1

什麼時候創建數據?它在種子.rb或夾具?如果數據是在測試運行期間創建的,則會回滾。 use_transactional_fixtures = true標誌爲您提供了這種行爲。擁有這個選項總是很好的。 – 2011-03-13 19:09:43

回答

1

的解決方案是 在spec_helper.rb文件我應該改變這種

config.use_transactional_fixtures = true 

這個

config.use_transactional_fixtures = false 

在測試中,我確實需要清理數據庫,我使用delete_all或database_手動清理它清潔(不管方便你)

這解決了我的問題,並通過測試使數據庫持久。