2009-07-21 19 views
16

के साथ सेटअप फैक्टरी गर्ल मैं रेल पर रूबी में टेस्ट :: यूनिट और कंधे के साथ फैक्टरी गर्ल सेट अप करने की कोशिश कर रहा हूं। मैंने मणि स्थापित किया है, परीक्षण/कारखानों निर्देशिका के तहत अपनी फैक्टरी फ़ाइल बनाई है, और परीक्षण/मॉडल निर्देशिका के तहत अपनी spec फ़ाइल बनाई है। मुझे जो त्रुटि मिल रही है वह है 'ArgumentError: ऐसा कोई कारखाना नहीं: परीक्षण', जो मुझे विश्वास दिलाता है कि test_factory.rb फ़ाइल लोड नहीं हो रही है? मुझे क्या पता होना चाहिए इसके बारे में कोई विचार?टेस्ट :: यूनिट और कंधे

यहां मेरी फाइलें हैं।

#test/factories/test_factory.rb 
Factory.define :test do |t| 
    t.name 'test_spotlight' 
    t.label 'test spotlight label' 
end 

और

#test/modes/test_spec.rb 
require 'test_helper' 
require 'factory_girl' 
class TestTest < Test::Unit::TestCase 
    def setup 
    @test = Factory.build(:test) 
    end 

    context "A test" do 
    should "save with the minimum requirements" do 
     assert @test.save 
    end 
    end 
end 

उत्तर

40

मैं कोशिश खोजने की कोशिश की जा सकती है मेरी परियोजनाओं में से एक पर भी इस समस्या में भाग लिया है। मुझे यकीन है कि ठीक क्या पैदा प्रवर्तन कोड छोड़ी जाने वाली नहीं हूँ, लेकिन आप इस तरह कारखाने परिभाषाओं लोड मजबूर कर सकते हैं:

require 'factory_girl' 
Factory.find_definitions 

आशा इस मदद करता है।

+1

यह मेरे लिए 'test_helper.rb' फ़ाइल में रखकर मेरे लिए काम किया। मैं factory_girl 1.3.3, रेल 2.3.11, रूबी 1.8.7, और बंडलर 1.0.10 – Sukima

+0

का उपयोग करते समय इसमें भाग गया, यह रेल 3.0.5 और रूबी के लिए भी काम करता है 1.9.2p180 – Nikhil

+0

मेरे लिए काम करते समय 3.0.9 रेल railstutorial। मेरे user_helper फ़ाइल में रखा गया। – LondonGuy

0

आप चलती की कोशिश की है

require 'factory_girl' 
अपने परीक्षा/test_helper.rb करने के लिए

?

कारखाना ऑटो-लोडिंग तंत्र इस बात पर निर्भर करता है कि आवश्यकता कहां कहलाती है। यह कारखानों * परीक्षा/मॉडल/कारखानों/** बजाय * परीक्षा/कारखानों/**

0

के बजाय अपने कारखाने फ़ाइल test_factory.rb नामकरण, नामकरण यह factory.rb

+0

दस्तावेज़ कहते हैं कि परीक्षण/कारखानों निर्देशिका के तहत कोई भी .rb फ़ाइल लोड होनी चाहिए – brad

2

मुझे एक ही समस्या थी।

require 'factory_girl' 
require File.dirname(__FILE__) + "/factories" 

आप एक से अधिक के लिए एक ही बात कर सकता है: आखिरकार मैं "/test/factories.rb" में अपने सभी कारखानों डालने और मेरी "/test/test_helper.rb" फ़ाइल में निम्नलिखित लाइनों लिख कर कर किए गए test_helper में उन्हें आवश्यकतानुसार फ़ाइलें। मैंने अभी तक यह नहीं पता लगाया है कि "factory_girl's" readme में उल्लिखित ऑटो-इन क्यों नहीं होता है।

1

अगर मुझे test_helper.rb में केवल 'factory_girl' की आवश्यकता होती है, तो मुझे वही व्यवहार मिलेगा जो आपने उल्लेख किया है, फिर भी अगर मुझे इसे मेरी कॉन्फ़िगर/test/environment.rb (नोट मैं environmentalist का उपयोग करता हूं) में ठीक से मिल जाएगा किसी भी मुद्दे के बिना फैक्टरी परिभाषा।

मैंने कारखाने की लड़की rdoc पढ़ने के बाद यह कोशिश की जहां यह आपके पर्यावरण में config.gem डालने के लिए कहता है।

3

test_helper.rb में इस डाल का प्रयास करें:

config.gem "factory_girl", :source => "http://gemcutter.org"

यह भी सुनिश्चित करें:

require 'factory_girl' 
Dir.glob(File.dirname(__FILE__) + "/factories/*").each do |factory| 
    require factory 
end 
2

मैं अपने environment.rb में इस लाइन डालकर इस मुद्दे से छुटकारा पाने में कामयाब आपके पास नवीनतम मणि है:

नाम "thoughtbot-factory_girl" से "factory_girl" में बदल गया, स्रोत "http://gems.github.com" से बदल गया "http://gemcutter.org" पर।

0

दिलचस्प।कारखाने_girl के साथ काम करने के लिए ककड़ी पाने की कोशिश करने में मुझे एक ही समस्या थी। मैंने मूल रूप से कारखाने_girl को ('config.gem') के लिए कॉन्फ़िगर किया था, लेकिन ककड़ी के माहौल में लोड नहीं किया गया था और पूरी तरह से 'सुविधाओं/समर्थन/env.rb' में आवश्यक था, जैसा कि ककड़ी के लिए ककड़ी करता है, आदि। जब मैंने स्पष्ट रूप से केनी के ऊपर सुझाए गए परिभाषाओं को खोजने के लिए कारखाने_girl को स्पष्ट रूप से बताया तो काम करें।

जब मैंने env.rb से आवश्यक कथन हटा दिया और ककड़ी के माहौल में पूरी तरह से आवश्यक कारखाने_girl, प्रभाव दूर चला गया और factory_girl बॉक्स से बाहर काम किया।

तो यह वास्तव में एक प्रश्न है (या किस संदर्भ में) factory_girl लोड हो जाता है।

2

यदि आपको रूबी 1.9.2, के साथ यह समस्या थी तो विस्तारित पथ की अपेक्षा करता है।

File.expand_path("test/factories.rb") 

यह patch मेरी समस्या हल हो गई। मैंने अभी एक पुल अनुरोध भेजा है। उसके बाद आप अपने test_helper.rb को यह जोड़ सकते हैं:

require 'factory_girl' 
FactoryGirl.find_definitions 
1

मैं भी समस्या में पड़ गए - कि परीक्षण से कारखानों/कारखानों स्वचालित रूप से किसी भी अधिक लोड नहीं किया गया - 1.3.2 के लिए FactoryGirl को अद्यतन करने के बाद।

मैं test_helper.rb में डीजी से कोड जोड़कर समस्या से छुटकारा पाने के हो सकते हैं:

Dir.glob(File.dirname(__FILE__) + "/factories/*.rb").each do |factory| 
require factory 
end 

जब Textmate में एक परीक्षण चल रहा है, सब कुछ ठीक काम किया, लेकिन जैसे चल रहा है रेक टेस्ट का उपयोग करके कमांड लाइन से सभी यूनिट परीक्षण: इकाइयां डुप्लिकेट डिफिनिशन एरर के साथ विफल रहीं (मैंने पढ़ा है कि शायद रूबी 1.8.एक्स के साथ ऐसा करने के लिए कुछ है)।

if (!Factory.factories || Factory.factories.empty?) 
    Dir.glob(File.dirname(__FILE__) + "/factories/*.rb").each do |factory| 
    require factory 
    end 
end 
+0

के विपरीत, मुझे एक ही समस्या थी। धन्यवाद! – deb

0

है अलग अलग लोगों को रेल के विभिन्न संस्करणों (2.x और 3 का उपयोग कर रहे के बाद से है: तो मैं थोड़ा कोड बदल .x अब सबसे आम है), अपने पर्यावरण के अन्य प्रासंगिक टुकड़ों को शामिल करना महत्वपूर्ण है (सबसे महत्वपूर्ण यह है कि आप जिस रेल के संस्करण पर हैं)। factory_girl वेब पेज से, संस्करण 1.3.0 प्रलेखन (http://rubydoc.info/gems/factory_girl/1.3.0/frames):

If you want to use factory_girl with Rails 3, use the factory_girl_rails gem, not this one.

If you want to use factory_girl with Rails versions prior to Rails 3, use version 1.2.4.

आप लोडिंग के साथ समस्या हो रही है, मैं यह सुनिश्चित करने का सुझाव दूंगा कि आप सही संस्करण का उपयोग कर रहे हैं। 1.2.4 से अधिक factory_girl के संस्करण, मुझे लगता है, 'factory_girl_rails' (रेल 3.0+) मणि के लिए निर्भरता के रूप में लाया जाता है।

0

मैं spec_helper.rb को whiche मदद की require 'factory_girl' require File.dirname(FILE) + "/factories" जोड़ा, लेकिन फिर मैं rememberd Spork कभी कभी बा एक समस्या का एक सा है, इसलिए मैं Spork require बिना पुन: प्रारंभ कर सकते हैं और फिर यह ठीक काम किया।

संबंधित मुद्दे