Der Titel ist selbsterklärend.
Alles, was ich versucht habe, führte zu einer "undefinierten Methode".
Zur Verdeutlichung versuche ich nicht, eine Hilfsmethode zu testen. Ich versuche, eine Hilfsmethode in einem Integrationstest zu verwenden.
Sie müssen lediglich das entsprechende Hilfsmodul in Ihren Test aufnehmen, um die Methoden verfügbar zu machen:
describe "foo" do
include ActionView::Helpers
it "does something with a helper method" do
# use any helper methods here
Es ist wirklich so einfach.
Wer zu spät auf diese Frage kommt, wird auf der Seite 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
Wenn Sie versuchen, eine Hilfemethode für Ihren Ansichtstest zu verwenden, können Sie Folgendes tun:
before do
view.extend MyHelper
end
Es muss sich innerhalb eines describe
-Blocks befinden.
Es funktioniert für mich auf Rails 3.2 und rspec 2.13
Basierend auf Thomas Riboulets Beitrag auf Coderwall :
Am Anfang Ihrer Spezifikationsdatei fügen Sie Folgendes hinzu:
def helper
Helper.instance
end
class Helper
include Singleton
include ActionView::Helpers::NumberHelper
end
und rufen Sie dann mit helper.name_of_the_helper
einen bestimmten Helfer an.
Dieses spezielle Beispiel enthält den ActionView-NumberHelper . Ich brauchte die UrlHelper , also habe ich include ActionView::Helpers::UrlHelper
und helper.link_to
.
Wie Sie hier https://github.com/rspec/rspec-Rails sehen können, sollten Sie das spec/-Verzeichnis (wo sich die Specs befinden) mit:
$ Rails generate rspec:install
dadurch wird eine Rails_helper.rb mit der Option generiert
config.infer_spec_type_from_file_location!
und schließlich benötigen Sie den neuen Rails_helper in Ihrer helper_spec.rb anstelle von 'spec_helper'.
require 'Rails_helper'
describe ApplicationHelper do
...
end
viel Glück.