2014-04-30 8 views
5

यह थोड़ी देर के लिए एक बग का झटका लग रहा था, लेकिन अब यह लगातार दिखाई दे रहा है: जब मैं आरएसपीसी को काफी सरल ApplicationHelper spec पर चलाता हूं, तो मुझे मिलता है निम्न त्रुटि:आरएसपीसी एप्लीकेशन हेल्पर टेस्ट: अपरिभाषित स्थानीय चर या विधि 'सहायक'

% rspec --backtrace 
    1) ApplicationHelper renders Markdown from plain text                               
    Failure/Error: expect(helper.md(plaintext)).to eq("<h1 id=\"header\">Header</h1>\n") 
    NameError: 
     undefined local variable or method `helper' for #<RSpec::ExampleGroups::ApplicationHelper_2:0x000001248d1218> 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-expectations-0f7b78587ab4/lib/rspec/matchers.rb:903:in `method_missing' 
    # ./spec/helpers/application_helper_spec.rb:4:in `block (2 levels) in <top (required)>' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example.rb:148:in `instance_exec' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example.rb:148:in `block in run' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example.rb:208:in `call' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example.rb:208:in `block (2 levels) in <class:Procsy>' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-rails-480b173c9ad6/lib/rspec/rails/adapters.rb:67:in `block (2 levels) in <module:MinitestLifecycleAdapter>' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example.rb:292:in `instance_exec' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example.rb:292:in `instance_exec' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/hooks.rb:430:in `block (2 levels) in run' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example.rb:208:in `call' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example.rb:208:in `block (2 levels) in <class:Procsy>' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/hooks.rb:432:in `run' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/hooks.rb:485:in `run' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example.rb:301:in `with_around_example_hooks' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example.rb:145:in `run' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example_group.rb:494:in `block in run_examples' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example_group.rb:490:in `map' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example_group.rb:490:in `run_examples' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/example_group.rb:457:in `run' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/runner.rb:112:in `block (2 levels) in run_specs' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/runner.rb:112:in `map' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/runner.rb:112:in `block in run_specs' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/reporter.rb:49:in `report' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/runner.rb:108:in `run_specs' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/runner.rb:86:in `run' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/runner.rb:70:in `run' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/lib/rspec/core/runner.rb:38:in `invoke' 
    # /Users/danielsh/.rvm/gems/[email protected]/bundler/gems/rspec-core-4219c4786f6f/exe/rspec:4:in `<top (required)>' 
    # /Users/danielsh/Dropbox/Project/Websites/Angular/bin/rspec:20:in `load' 
    # /Users/danielsh/Dropbox/Project/Websites/Angular/bin/rspec:20:in `<main>' 

यहाँ पूरा कल्पना फ़ाइल है (spec_helper मेरी .rspec फ़ाइल के भाग के रूप में शामिल है):

describe ApplicationHelper do 
    it 'renders Markdown from plain text' do 
    plaintext = '# Header' 
    expect(helper.md(plaintext)).to eq("<h1 id=\"header\">Header</h1>\n") 
    end 
end 

यह हाल ही में जब तक ऊपर काम कर रहा था, लेकिन मैं कुछ क्या मैं कर सकता नहीं कर रहा हूँ इस तरह की एक बुनियादी उपलब्धि तोड़ने के लिए किया है ure। मैं रेल और आरएसपीईसी के किनारे संस्करणों का उपयोग कर रहा हूं, लेकिन यह सुझाव देने के लिए कि उनके helper को हटा दिया गया है और rails g helper foo चल रहा है, यह संकेत देने के साथ foo_helper_spec.rb फ़ाइल उत्पन्न करता है जो संकेत देता है कि helper में हेल्पर स्वयं ही शामिल है। अगर किसी के पास कोई विचार है, तो मैं उनके लिए आभारी रहूंगा!

+0

आप कैसे परिभाषित कर रहे हैं 'ApplicationHelper' की तरह दिखना चाहिए? – sevenseacat

+0

यह कम से कम जहां तक ​​मैं देख सकता हूं, यह बहुत सरल है। यहां एक सारांश है, क्योंकि टिप्पणी कोड नमूना नहीं लेगी: https://gist.github.com/anonymous/752547b5c480391893aa – Daniel

उत्तर

9

मैंने एक नई रेल परियोजना को एक नई आरएसपीईसी स्थापना के साथ बनाया, और इससे मुझे समस्या हुई। जाहिर है हाल के बीटा में से एक ने कॉन्फ़िगरेशन निर्देश पेश किया है जिसे config.infer_spec_type_from_file_location! कहा जाता है जो मेरी छोटी पुरानी spec_helper फ़ाइल से गायब था; इसके बिना, आरएसपीसी स्पेक प्रकार का अनुमान लगा रहा था और संबंधित तरीकों में मिश्रण कर रहा था। परिवर्तन तोड़ने से सावधान रहें!

+0

आपने इसे कैसे ठीक किया? – codenoob

+0

@codenoob आपको अपनी 'spec_helper.rb' फ़ाइल में 'config.infer_spec_type_from_file_location!' जोड़ना होगा। धन्यवाद! @ डैनियल! इससे मेरी मदद की – cdpalmer

0

पश्व-अनुरेखन से, यह नहीं दिखता है आप rspec-rails मणि उपयोग कर रहे हैं - बस rspec-core और rspec-expectations

rspec-rails आपके सहायक चश्मे के लिए helper विधि प्रदान करता है। मेरे कोडबेस में एक स्पेक के अंदर से:

(rdb:1) self.method(:helper).source_location 
["/home/becky/.gem/ruby/2.0.0/gems/rspec-rails-2.14.1/lib/rspec/rails/example/helper_example_group.rb", 19] 
+0

मुझे एक समान समस्याएं हैं और जब मैं परीक्षण को डीबग करते समय उस आदेश को चलाता हूं तो मुझे मिलता है: ["/home/vagrant/.rvm/rubies/ruby-2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.1.1/lib/abstract_controller/helpers.rb", 110] मेरे पास rspec-rails मणि शामिल है – William

1

यह एक अजीब त्रुटि है !! क्या आप वाकई अपने स्पेक में spec_helper की आवश्यकता है?

वैसे भी आप helper विधि के बिना कोशिश कर सकते:,

RSpec.configure do |config| 
    ... 
    config.include ApplicationHelper 
end 

फिर परीक्षण helper बिना तो यह हो जाएगा::

पहले आपको पहले निम्न /spec/spec_helper.rb में जोड़ना चाहिए

describe ApplicationHelper do 
    it 'renders Markdown from plain text' do 
    plaintext = '# Header' 
    expect(md(plaintext)).to eq("<h1 id=\"header\">Header</h1>\n") 
    end 
end 
+0

हाय वहाँ! 'एप्लिकेशनहेल्पर' सहित और 'सहायक' के बिना परीक्षण ने सूट हरे रंग को फिर से बदल दिया, लेकिन मुझे यकीन नहीं है कि यह क्या इंगित करेगा। मैं 'spec_helper' ''rspec' में शामिल कर रहा हूं, लेकिन इसे spec में जोड़कर चीजों को किसी भी चीज़ में नहीं बदला जाता है। – Daniel

4

जोड़ने :type => :helper तो अपने कोड

describe ApplicationHelper, type: :helper do 
... 
end 
संबंधित मुद्दे