2013-01-18 4 views

Antwort

23

Sie müssen nur die entsprechenden Helfermodul in Ihren Test umfassen die Verfahren zur Verfügung zu stellen:

describe "foo" do 
    include ActionView::Helpers 

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

Es ist wirklich so einfach ist das .

+0

Können Sie sagen, wie man die Methode aufruft? Ich habe 'SearchHelper :: formatResultDate (r.date)' und 'formatResultDate (r.date)' versucht, bekomme aber noch eine "undefined Methode". Thks –

+1

Ist das dein eigener Helfer? Ist 'SearchHelper' ein Modul? Wenn ja, ersetzen Sie einfach "inlucde ActionView :: Helpers" durch "include SearchHelper", und dann sollten Sie einfach die Methode mit 'formatResultDate (r.date)' aufrufen können. –

+2

Das hat beim Testen von Mailern nicht funktioniert. zum Beispiel 'expect (mail.body) .to match (I18n.t ('some.path', argument: link_to (Wert, custom_url_helper (Wert)))'. –

-1

Ich nehme an, Sie versuchen, die Hilfsmethode zu testen. Um dies zu tun, müssen Sie Ihre Spezifikationsdatei in spec/helpers/ setzen. Wenn Sie den Edelstein rspec-rails verwenden, erhalten Sie eine Methode helper, mit der Sie eine beliebige Hilfsmethode aufrufen können.

Es gibt ein schönes Beispiel über in 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

Nein, es gibt viele Antworten zum Testen von Hilfsmethoden. Ich versuche, eine Hilfsmethode in einem Integrationstest zu verwenden. Tks sowieso –

+1

Oh okay.Wenn Sie Ihre Frage erweitern und ein wenig mehr Details geben könnten (vielleicht ein paar Codebeispiele), werde ich versuchen, Ihnen trotzdem zu helfen :) –

4

Wenn Sie versuchen, eine Hilfsmethode auf Ihrer Ansicht Test verwenden möchten, können Sie mit den folgenden gehen:

before do 
    view.extend MyHelper 
end 

es in einem describe Block sein muss.

Es funktioniert für mich auf Schienen 3.2 und rspec 2.13

+0

Wenn wir annehmen, dass Sie sich in einer spec/helpers/my_helper_spec befinden .rb von wo kommt die "Ansicht" in der Spezifikation? –

+0

@IvailoBardarov Sorry, dies ist für die Verwendung von Innenansichten. Wie das OP sagt: 'Um zu klären, versuche ich nicht, eine Hilfsmethode zu testen – fotanus

8

Für alle spät auf diese Frage kommt, wird es auf der Website Relish beantwortet.

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

Wie Sie hier https://github.com/rspec/rspec-rails sehen können, sollten Sie die spec/Verzeichnis initialisiert werden (wo Spezifikationen befinden wird) mit:

$ rails generate rspec:install 

dies eine rails_helper.rb mit der Option erzeugen

config.infer_spec_type_from_file_location! 

und schließlich benötigen Sie den neuen rails_helper in Ihrem helper_spec.rb, anstatt "spec_helper" zu benötigen.

require 'rails_helper' 
describe ApplicationHelper do 
    ... 
end 

viel Glück.

Verwandte Themen