سؤال

أحاول إعداد فتاة المصنع مع اختبار :: الوحدة والكالة في روبي على القضبان. لقد قمت بتثبيت GEM، أنشأ ملف المصنع الخاص بي ضمن دليل الاختبار / المصانع، وإنشاء ملف 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 
هل كانت مفيدة؟

المحلول

لقد واجهت هذه المشكلة في أحد مشاريعي أيضا. لست متأكدا بالضبط ما الذي يتسبب في تخطي رمز التهيئة ولكن يمكنك إجبار تحميل تعريفات المصنع مثل هذا:

require 'factory_girl'
Factory.find_definitions

أتمنى أن يساعدك هذا.

نصائح أخرى

حاول وضع هذا في test_helper.rb:

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

اكتشف فقط Factory_Girl_Rails، حيث تقول Autoloading هو الشيء الإضافي الوحيد الذي لديه https://github.com/thoutebot/factory_girl_rainails.

كان لي نفس المشكلة. في النهاية قمت بعمل من خلال وضع كل مصانعي في "/Test/Factories.rb" وكتابة الأسطر التالية في ملف "/Test_Test_helper.rb"

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

يمكنك أن تفعل الشيء نفسه لملفات متعددة عن طريق طلبها في Test_Helper. أنا لم أحسب بعد لماذا تتضمن التلقائي هذا المذكور في "Factory_Girl's" لا يحدث.

تمكنت أيضا من التخلص من هذه المشكلة عن طريق وضع هذا الخط في بيئتي.

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

قم بالتأكد من أن لديك أحدث GEM:

تم تغيير الاسم من "InnBot-Factory_Girl" إلى "factory_girl"، تغير المصدر من "http://gems.github.com." ل "http://gemcutter.org.".

في حال كان لديك هذه المشكلة مع روبي 1.9.2، يتطلب تتوقع المسار الموسع.

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

هذه رقعة قماشية حل مشكلتي. أنا فقط أرسلت طلب سحب. بعد ذلك يمكنك إضافة هذا إلى test_helper.rb:

require 'factory_girl'
FactoryGirl.find_definitions

إذا كنت بحاجة فقط "Factory_Girl" في Test_Helper.rb، فسأحصل على نفس السلوك الذي ذكرته، ولكن إذا كنت بحاجة إليه في التكوين / الاختبار / البيئة (ملاحظة أنا استخدم البيئة البيئية) ستجد بشكل صحيح تعريف المصنع دون أي مشكلة.

حاولت هذا بعد قراءة فتاة المصنع RDoc حيث تقول لوضع config.gem في بيئتك.

لقد ركضت أيضا في المشكلة - بعد تحديث FactoryGirl إلى 1.3.2 - لم يتم تحميل هذه المصانع من الاختبار / المصانع تلقائيا بعد الآن.

يمكنني التخلص من المشكلة عن طريق إضافة الرمز من DG إلى Test_Helper.rb:

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

عند تشغيل الاختبارات الفردية في Textmate، عمل كل شيء على ما يرام، ولكن على سبيل المثال، تشغل جميع اختبارات الوحدة من سطر الأوامر باستخدام اختبار أشعل النار: فشلت الوحدات مع duplicativeefinitionError (قرأت أنه ربما علاقة مع روبي 1.8.x). لذلك قمت بتغيير الرمز قليلا:

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

هل حاولت نقل

require 'factory_girl'

لك اختبار / test_helper.rb. ?

آلية التحميل التلقائي للمصنع قد تعتمد على مكان استدعاء الطلب. قد يحاول العثور على المصانع * اختبار / نماذج / مصانع / ** بدلا من اختبار / مصانع / **

بدلا من تسمية ملف المصنع الخاص بك Test_Factory.rb، حاول تسمية IT Factory.rb

مثير للانتباه. كان لدي مشكلة مماثلة في محاولة للحصول على خيار للعمل مع Factory_Girl. لقد قمت بالفعل بتكوين Factory_Girl ليتم بحثها عن ('config.gem') ولكن لم يتم تحميلها في بيئة الخيار والمطلوب بالكامل في "الميزات / الدعم / Env.rb"، مثل الخيار الذي يفعله WeBrat، وما إلى ذلك. اعمل عندما أخبرنا صراحة Factory_Girl أن أجد تعريفاتها كما اقترح كيني أعلاه.

عندما أزلت عبارة تتطلب من Env.rb و Factory Factory المطلوبة بالكامل في بيئة الخيار، فقد ذهبت التأثير وبدأ Factory_Girl خارج الصندوق.

لذلك يبدو أن مجرد مسألة متى يتم تحميل Factory_girl (أو في أي سياق).

نظرا لأن الأشخاص المختلفين يستخدمون إصدارات مختلفة من القضبان (2.x و 3.x كونها الأكثر شيوعا الآن)، فمن المهم تضمين القطع الأخرى ذات الصلة من بيئتك (أهم إصدار من القضبان التي تقوم بها) وبعد من Factory_Girl صفحة ويب، الإصدار 1.3.0 الوثائق (http://rubydoc.info/gems/factory_girl/1.3.0/frames):

إذا كنت ترغب في استخدام Factory_Girl مع القضبان 3، فاستخدم جوهرة Factory_Girl_Rails، وليس هذا.

إذا كنت ترغب في استخدام Factory_Girl مع إصدارات القضبان قبل القضبان 3، استخدم الإصدار 1.2.4.

إذا كنت تواجه مشكلة في التحميل، فاقترح التأكد من أنك تستخدم الإصدار الصحيح. إصدارات Factory_girl أكبر من 1.2.4، كنت أفترض، يتم إحضارها كإعدادات لجواية "Factory_Girl_Rails" (Rails 3.0+) GEM.

أضفتrequire 'factory_girl' require File.dirname(ملف) + "/factories" إلى Spec_Helper.rb، ساعد، ولكن بعد ذلك أتذكر SPORK يمكن أن تكون في بعض الأحيان BA جزء من المشكلة، لذلك أعيدت require ثم عملت بشكل جيد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top