每次運行測試時。 Rails將從表中刪除我的數據。我在桌面上有百萬條記錄用於測試搜索性能和糾正。每次運行測試時我都不能添加數據。如何在軌道中運行測試時保留數據
如何告訴rails「請不要刪除此表中的數據」當我運行測試。
ps。
我發現這個鏈接
How do I run Rails integration tests without dropping DB contents?
它可能涉及到我的問題,但我不知道在哪裏把他的代碼在我的軌道項目。
每次運行測試時。 Rails將從表中刪除我的數據。我在桌面上有百萬條記錄用於測試搜索性能和糾正。每次運行測試時我都不能添加數據。如何在軌道中運行測試時保留數據
如何告訴rails「請不要刪除此表中的數據」當我運行測試。
ps。
我發現這個鏈接
How do I run Rails integration tests without dropping DB contents?
它可能涉及到我的問題,但我不知道在哪裏把他的代碼在我的軌道項目。
與neokain之前的帖子非常相似,但是他沒有爲我工作Rails 3。 我繼續投進我的Rakefile這在應用程序的根,當我運行測試:單元,它並沒有吹走我的所有現有表:
Rake::TaskManager.class_eval do
def delete_task(task_name)
@tasks.delete(task_name.to_s)
end
Rake.application.delete_task("db:test:purge")
Rake.application.delete_task("db:test:prepare")
end
namespace :db do
namespace :test do
task :purge do
end
task :prepare do
end
end
end
「rake test」任務總是運行db:test:prepare將會重新創建數據庫。
可以在LIB /任務添加這個地方:
if ENV['NO_DB']
namespace :db do
namespace :test do
task :prepare do
end
end
end
end
然後運行NO_DB=1 rake test
。此外,當您使用自動測試而不是耙子任務時,數據庫將不會更改。
我試着做第一個答案但不行。
我搜索,發現這個www.pervasivecode.com我修改的代碼從第一個答案是這樣的:
if ENV['NO_DB']
Rake::TaskManager.class_eval do
def delete_task(task_name)
@tasks.delete(task_name.to_s)
end
Rake.application.delete_task("db:test:purge")
end
namespace :db do
namespace :test do
task :prepare do
end
end
end
end
然後運行命令測試允許第一個答案。數據庫測試不會丟失。
在Rails 4我結束了以下
# lib/tasts/test.rake
# Do not drop database for tests
if ENV['RAILS_ENV'] == 'test'
Rake::TaskManager.class_eval do
def delete_task(task_name)
@tasks.delete(task_name.to_s)
end
end
Rake.application.delete_task("db:test:load")
namespace :db do
namespace :test do
task :load do
end
end
end
end
哎喲。我忘記了rake規範做到了這一點...對於其他googlers,在運行rake規範時也使用了database_cleaner。它吹走了我的種子數據,我認爲我已經用db清理器正確屏蔽了,所以IT不會把它吹走。但是這種方法效果很好。有時候「鐵軌有幫助」在鐵軌中真的很痛苦...... – 2013-03-25 20:42:49