मैं वर्तमान में फिक्स्चर से कारखानों में माइग्रेशन शुरू करने और कुछ परीक्षण डेटाबेस चुनौतियों में भाग लेने की प्रक्रिया में हूं।प्रत्येक परीक्षण से पहले पुनर्निर्माण के लिए रेल परीक्षण डेटाबेस कैसे प्राप्त करूं?
जब मैं अपना पूरा परीक्षण सूट चलाता हूं तो डेटाबेस साफ़ हो जाता है और नया कारखाना उत्पन्न डेटा पुनः लोड हो जाता है। हालांकि, जब मैं अलग-अलग यूनिट परीक्षण चलाता हूं तो डेटाबेस पुराने मानों को साफ़ नहीं करता है।
मैं रेक डीबी चला सकता हूं: परीक्षण: प्रत्येक व्यक्तिगत परीक्षण से पहले तैयार करें, लेकिन इससे मेरा विकास धीमा हो जाएगा।
self.use_transactional_fixtures = false
self.use_instantiated_fixtures = true
उदाहरण के लिए::
require File.dirname(__FILE__) + '/../test_helper'
class LocationTest < ActiveSupport::TestCase
test "should require name to save" do
location = Factory.create(:location)
end
end
एक बार सफलतापूर्वक चला लेकिन परीक्षण फ़ाइल के बाद रन पर असफल हो जायेगी
यहाँ अपने परीक्षण सेटिंग नहीं है। यह पहले कभी नहीं हुआ क्योंकि टेस्ट फिक्स्चर प्रत्येक रन पर लोड होगा।
मैं कारखाने अनुक्रमण को शामिल किया है, लेकिन प्रत्येक चलाने के दौरान यह है कि केवल दृश्यों का श्रेय:
Factory.define :location do |l|
l.sequence(:name) {|n| "place#{n}"}
l.street '123 N Pitt Street'
l.state_id 4
l.city 'San Francisco'
l.location_type_id LocationType::COMMON
l.shipper_id 1
l.zip 23658
end
परिणामों में:
trunk>ruby test\unit\location_test.rb
Loaded suite test/unit/location_test
Started
.
Finished in 0.162 seconds.
1 tests, 0 assertions, 0 failures, 0 errors
>ruby test\unit\location_test.rb
Loaded suite test/unit/location_test
Started
E
Finished in 0.134 seconds.
1) Error:
test_should_require_name_to_save(LocationTest):
ActiveRecord::RecordInvalid: Validation failed: Name has already been taken
c:/ruby/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.1/lib/factory_girl/proxy/create.rb:5:in `result'
c:/ruby/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.1/lib/factory_girl/factory.rb:293:in `run'
c:/ruby/lib/ruby/gems/1.8/gems/thoughtbot-factory_girl-1.2.1/lib/factory_girl/factory.rb:237:in `create'
test/unit/location_test.rb:18:in `test_should_require_name_to_save'
1 tests, 0 assertions, 0 failures, 1 errors
जोड़ें: self.use_transactional_fixtures = सच इस वर्ग के लिए है और यह काम करता है! धन्यवाद। हां, ऐसे कारण हैं कि मैं इसे पूरे पर्यावरण के लिए क्यों नहीं बदल सकता। मैंने इसे सिर्फ एक परीक्षण के लिए बदलने के बारे में भी नहीं सोचा था ... दोह! फिर से धन्यवाद। –