2012-08-09 14 views
40

मैं this रेल परीक्षण के लिए प्रारंभिक का पालन कर रहा हूं और Ive एक ऐसे मुद्दे में चलाया गया है जिसे मैं समाधान नहीं ढूंढ पा रहा हूं। मैं रेल के साथ बहुत परिचित हूं लेकिन यह परीक्षण में मेरा पहला प्रयास है।रेल 3.2, आरएसपीसी, फैक्टरी गर्ल: नाम त्रुटि: अनियमित स्थिर फैक्टरी

किसी भी तरह, मेरे पास एक बहुत ही बुनियादी मॉडल परीक्षण है, यहां तक ​​कि पूरी तरह कार्यान्वित नहीं किया गया है और जब मैं rspec spec/models/admin_spec.rb चलाता हूं और चलाता हूं। मैं Admin has a valid factory लाइन (पूर्ण नीचे कोड) में निम्न त्रुटि

Admin has a valid factory 
Failure/Error: Factory.create(:admin).should be_valid 
NameError: 
    uninitialized constant Factory 
# ./spec/models/admin_spec.rb:6:in `block (2 levels) in <top (required)>' 

मुझे लगता है FactoryGirl किसी कारण से लोड किए जा रहे is not लेकिन मैं धारणा यह स्वचालित रूप से लोड किया जाना चाहिए के तहत किया गया मिलता है। नीचे मेरी Gemfile, /spec/models/admin_spec.rb से पूर्ण कोड और /spec/factories/admins.rb

धन्यवाद आपकी मदद के लिए बहुत बहुत

Gemfile

source 'https://rubygems.org' 

gem 'rails', '3.2.2' 
gem 'mysql2' 
gem 'jquery-rails' 
gem 'haml' 
gem 'bcrypt-ruby', :require => 'bcrypt' 
gem 'bootstrap-sass', '~> 2.0.2' 
gem 'capistrano' 
gem 'json' 
gem "paperclip", '~>3.0' 
gem 'airbrake' 
gem 'acts_as_list' 
gem 'nested_form', :git => 'https://github.com/ryanb/nested_form.git' 
gem 'bootstrap-wysihtml5-rails' 
gem 'will_paginate', '~> 3.0' 
gem 'bootstrap-will_paginate' 
gem 'thinking-sphinx', '2.0.10' 

gem 'sass-rails', '~> 3.1' 
gem 'coffee-rails' 
gem 'uglifier' 
# gem 'compass' 

group :development do 
    gem 'awesome_print' 
    gem 'wirble' 
end 

group :development, :test do 
    gem 'rspec-rails' 
    gem 'factory_girl_rails' 
end 

group :production do 
    gem 'execjs' 
    gem 'therubyracer' 
end 

group :test do 
    # Pretty printed test output 
    gem 'turn', :require => false 
    gem 'faker' 
    gem 'capybara' 
    gem 'guard-rspec' 
    gem 'launchy' 
end 

है /spec/factories/admin.rb

require 'faker' 

FactoryGirl.define do 
    factory :admin do |f| 
    f.name Faker::Name.name 
    f.email Faker::Internet.email 
    end 
end 

/कल्पना/मो dels/admin_spec.rb

require 'spec_helper' 

describe Admin do 
    it "has a valid factory" do 
    Factory.create(:admin).should be_valid 
    end 
    it "is invalid without a name" 
    it "is invalid without an email" 
end 

उत्तर

122

यह FactoryGirl.create बजाय होना चाहिए। स्पष्ट रूप से Factory को बहिष्कृत कर दिया गया था और अब हटा दिया गया है, आपके द्वारा प्रदान किए गए लिंक में टिप्पणियों को देखें :)

+0

आह * श्वास *। हाहा, बहुत बहुत धन्यवाद। मैंने "अनियमित स्थिर फैक्टरी त्रुटि" के लिए पृष्ठ पर एक खोज किया लेकिन पर्याप्त पास नहीं पढ़ा। मुझे लगा कि यह कुछ आसान होगा। एक बार फिर धन्यवाद। – chrisgooley

9

यह आपके प्रश्न का उत्तर नहीं है, लेकिन मैंने देखा है कि फैकरगर्ल के साथ फ़कर के उपयोग में एक अस्पष्ट त्रुटि है । f.name और f.email प्रत्येक FactoryGirl.create या FactoryGirl.build के लिए समान होगा।

f.name Faker::Name.name 
f.email Faker::Internet.email 

फ़ेकर कॉल के चारों ओर घुंघराले ब्रेसिज़ जोड़ें ताकि फैक्ट्री के प्रत्येक संदर्भ यादृच्छिक फ़कर डेटा उत्पन्न कर सकें।

f.name { Faker::Name.name } 
f.email { Faker::Internet.email } 
वास्तव में में
+0

आह यूप, मैंने बाद में उस पर पकड़ लिया, जबकि मैं अपने कोड की समीक्षा कर रहा था, लेकिन किसी भी तरह से सिर के लिए धन्यवाद। – chrisgooley

+0

इसके लिए धन्यवाद! बेवकूफ गलती लेकिन याद करने में आसान है – rpearce

10

अपने spec_helper.rbRspec.configure do...end के तहत आप जोड़ सकते हैं

RSpec.configure do |config| 
    config.include FactoryGirl::Syntax::Methods 
end 

यह आपको :build और :create पूरी तरह से पहले लगाकर FactoryGirl. की परेशानी की बचत होगी:

'spec_helper'

की आवश्यकता होती है
describe Admin do 
    it "has a valid factory" do 
    create(:admin).should be_valid 
    end 
    it "is invalid without a name" 
    it "is invalid without an email" 
end 

देखें: FactoryGirl Documentation

1

साथ ही, सुनिश्चित करें कि आप अपनी spec_helper.rb फ़ाइल में आवश्यक कथन शामिल कर रहे हैं।

require 'factory_girl_rails'