2010-06-15 11 views
7

तो मैंरेल पर रूबी: ककड़ी: प्रत्येक परिदृश्य के बाद डीबी कैसे रीसेट करें?

अब मेरे परीक्षण वातावरण में हूँ, terminial, रेक DB में: परीक्षण: तैयार डाटाबेस को साफ करता है ... लेकिन जब मैं कोड

से वह न चल पाए और मैं सुविधाओं में इस राशि /support/env.rb:

Before do 
    task :build_all do 
     [ :debug, :release ].each do |t| 
     $build_type = t 
     Rake::Task["db:test:prepare"].reenable 
     Rake::Task["db:test:prepare"].invoke 
     end 
    end 
end 

लेकिन जब मेरे परीक्षण

चल रहा यह मेरा database.yml में है किया जाता है अपने डेटा project_test DB में बनी हुई है

test: 
    adapter: mysql 
    encoding: utf8 
    database: projectname_test 
    username: root 
    password: 

Ive भी

db:test:purge 

और

db:test:reset 

की कोशिश की और मुझे पता है कि यह अपने परीक्षण db उपयोग कर रहा है, क्योंकि मैं mySQLWorkbench जाँच, और यह तालिकाओं में डेटा सम्मिलित करता है ... लेकिन डेटा पूरा होने पर डेटा को हटा नहीं देता है (मुझे इसे मैन्युअल रूप से हटाना होगा)। जब टेबल खाली होते हैं, तो टेस्ट केस

+0

क्या आप वाकई InnoDB का उपयोग कर रहे हैं और नहीं MyISAM हैं। –

उत्तर

0

इस बारे में आईडीके हैं, लेकिन क्या आपने फ्लाई पर डेटाबेस को छोड़ने और पुनर्निर्माण करने का प्रयास किया है?

+0

काम नहीं किया = (मैंने उपरोक्त के समान किया ... 4 रेक लाइनों को छोड़कर ... डीबी के साथ: परीक्षण: ड्रॉप, और डीबी: परीक्षण: – DerNalia

+0

चलाना टर्मिनल कार्यों में तैयार करें ... तो मुझे लगता है सुविधाओं/समर्थन/env.rb – DerNalia

+0

में कोड के साथ कुछ गड़बड़ है ठीक है, शायद सुविधाओं/समर्थन/env.rb में रिकोडिंग (समस्या को हल करना) एक समाधान हो सकता है। – Nik

1

आरएसपीईसी में परीक्षण जैसे ककड़ी में परिदृश्य लेनदेन ब्लॉक में चलाए जाते हैं और परिदृश्य पूरा होने के बाद वापस लुढ़क जाते हैं। डेटाबेस में मौजूद कोई भी डेटा जो वहां नहीं होना चाहिए शायद किसी और चीज़ से बचा है। अपने डेटाबेस को शुद्ध करने का प्रयास करें।

+0

कैसे? ककड़ी :: रेल :: विश्व। use_transactional_fixtures = true env.rb में है ... तो लेन-देन लेनदेन काम कर रहे हैं ... लेकिन वे नहीं हैं। ककड़ी की विशेषताएं/featurename.feature चलाने के बाद डेटा छोड़ दिया गया है – DerNalia

4

आप का उपयोग करना चाहिए

begin 
    require 'database_cleaner' 
    require 'database_cleaner/cucumber' 
    DatabaseCleaner.strategy = :truncation 

rescue NameError 
    raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it." 

end 

Before do 
    DatabaseCleaner.start 
end 

After do |scenario| 
    DatabaseCleaner.clean 
end 
संबंधित मुद्दे