2013-01-18 11 views
25

शीर्षक स्वयं व्याख्यात्मक है।रेल में आरएसपीसी परीक्षण से ऐप सहायक विधि को कैसे कॉल करें?

मैंने जो भी प्रयास किया है, वह "अपरिभाषित विधि" का कारण बन गया।

स्पष्टीकरण के लिए, मैं एक सहायक विधि का परीक्षण करने की कोशिश नहीं कर रहा हूं। मैं एकीकरण परीक्षण में एक सहायक विधि का उपयोग करने की कोशिश कर रहा हूं।

उत्तर

23

तुम बस तरीकों उपलब्ध बनाने के लिए अपने परीक्षण में प्रासंगिक सहायक मॉड्यूल शामिल करने की जरूरत:

describe "foo" do 
    include ActionView::Helpers 

    it "does something with a helper method" do 
    # use any helper methods here 

यह वास्तव में के रूप में है कि के रूप में आसान है ।

+0

क्या आप बता सकते हैं कि विधि को कैसे कॉल करें? मैंने 'SearchHelper :: formatResultDate (r.date)' और 'formatResultDate (r.date)' की कोशिश की है, लेकिन अभी तक एक और "अपरिभाषित विधि" प्राप्त करें। Thks –

+1

क्या यह आपका स्वयं का सहायक है? क्या 'सर्चहेल्पर' मॉड्यूल है? यदि ऐसा है, तो 'SearchHelper' शामिल करके 'inlucde ActionView :: हेल्पर्स' को प्रतिस्थापित करें, और फिर आपको विधि 'formatResultDate (r.date)' के साथ विधि को कॉल करने में सक्षम होना चाहिए। –

+2

मेलर्स का परीक्षण करते समय यह मेरे लिए काम नहीं करता था। उदाहरण के लिए 'उम्मीद (mail.body)। मिलान करने के लिए (I18n.t (' some.path ', तर्क: link_to (मान, custom_url_helper (मान))) –

-1

मुझे लगता है कि आप सहायक विधि का परीक्षण करने की कोशिश कर रहे हैं। ऐसा करने के लिए आपको अपनी स्पेक फ़ाइल spec/helpers/ में रखना होगा। यह देखते हुए कि आप rspec-rails मणि का उपयोग कर रहे हैं, यह आपको helper विधि प्रदान करेगा जो आपको इस पर किसी भी सहायक विधि को कॉल करने की अनुमति देता है।

वहाँ एक अच्छा उदाहरण the official rspec-rails documentation में खत्म हो गया:

require "spec_helper" 

describe ApplicationHelper do 
    describe "#page_title" do 
    it "returns the default title" do 
     expect(helper.page_title).to eq("RSpec is your friend") 
    end 
    end 
end 
+0

नहीं, सहायक तरीके से परीक्षण करने के बारे में बहुत सारे जवाब हैं। मैं एकीकरण परीक्षण में एक सहायक विधि उपयोगकर्ता की कोशिश कर रहा हूँ। वैसे भी –

+1

ओह ठीक है।यदि आप अपना प्रश्न बढ़ा सकते हैं और थोड़ी अधिक जानकारी दे सकते हैं (शायद कुछ कोड उदाहरण) मैं आपकी मदद करने की कोशिश करूंगा :) –

4

आप अपना दृश्य परीक्षण पर एक सहायक विधि का उपयोग करने की कोशिश कर रहे हैं, तो आप निम्नलिखित के साथ जा सकते हैं:

before do 
    view.extend MyHelper 
end 

यह एक describe ब्लॉक के अंदर होना चाहिए।

यह रेल 3.2 पर मेरे लिए काम करता है और rspec 2.13

+0

यदि हम मानते हैं कि आप एक spec/helpers/my_helper_spec में हैं sper में "view" कहां से आता है? –

+0

@IvailoBardarov क्षमा करें, यह अंदरूनी विचारों का उपयोग करने के लिए है। ओपी साइस के रूप में: 'स्पष्टीकरण के लिए, मैं एक सहायक विधि का परीक्षण करने की कोशिश नहीं कर रहा हूं।' – fotanus

8

इस सवाल का देर से आने के किसी के लिए, यह Relish साइट पर दिए है।

require "spec_helper" 

describe "items/search.html.haml" do 
    before do 
    controller.singleton_class.class_eval do 
     protected 
     def current_user 
     FactoryGirl.build_stubbed(:merchant) 
     end 
     helper_method :current_user 
    end 
    end 

    it "renders the not found message when @items is empty" do 
    render 

    expect(
     rendered 
    ).to match("Sorry, we can't find any items matching "".") 
    end 
end 
0

आप यहाँ https://github.com/rspec/rspec-rails देख सकते हैं, आप कल्पना/निर्देशिका (जहां चश्मा निवास करेंगे) के साथ प्रारंभ करना चाहिए:

$ rails generate rspec:install 

इस विकल्प

config.infer_spec_type_from_file_location! 
के साथ एक rails_helper.rb उत्पन्न होगा

और अंततः 'spec_helper' की आवश्यकता के बजाय helper_spec.rb में नए rails_helper की आवश्यकता होती है।

require 'rails_helper' 
describe ApplicationHelper do 
    ... 
end 

शुभकामनाएँ।

1

पर Thomas Riboulet's post on Coderwall आधार पर:

अपने कल्पना फ़ाइल की शुरुआत में इस जोड़ें:

और फिर helper.name_of_the_helper साथ एक विशेष सहायक कहते हैं।

इस विशेष उदाहरण में ActionView's NumberHelper शामिल है। मुझे UrlHelper की आवश्यकता थी, इसलिए मैंने include ActionView::Helpers::UrlHelper और helper.link_to किया।