Le titre est explicite.
Tout ce que j'ai essayé a conduit à une "méthode indéfinie".
Pour clarifier, je n'essaye pas de tester une méthode d'assistance. J'essaie d'utiliser une méthode d'assistance dans un test d'intégration.
Vous devez simplement inclure le module d'aide approprié dans votre test pour rendre les méthodes disponibles:
describe "foo" do
include ActionView::Helpers
it "does something with a helper method" do
# use any helper methods here
C'est aussi simple que ça.
Pour ceux qui arrivent en retard à cette question, il est répondu sur le site 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
Si vous essayez d'utiliser une méthode d'assistance dans votre test de vue, vous pouvez utiliser les éléments suivants:
before do
view.extend MyHelper
end
Il doit être dans un bloc describe
.
Cela fonctionne pour moi sur Rails 3.2 et Rspec 2.13
Basé sur le message de Thomas Riboulet sur Coderwall :
Au début de votre fichier de spécifications, ajoutez ceci:
def helper
Helper.instance
end
class Helper
include Singleton
include ActionView::Helpers::NumberHelper
end
puis appelez un assistant particulier avec helper.name_of_the_helper
.
Cet exemple particulier inclut le NumberViewer d'ActionView . J'avais besoin de UrlHelper , alors j'ai include ActionView::Helpers::UrlHelper
et helper.link_to
.
Comme vous pouvez le voir ici https://github.com/rspec/rspec-Rails , vous devez initialiser le répertoire spec/(où les spécifications figureront) avec:
$ Rails generate rspec:install
cela générera un Rails_helper.rb avec l'option
config.infer_spec_type_from_file_location!
et enfin, exigez le nouveau Rails_helper dans votre fichier helper_spec.rb au lieu de «spec_helper».
require 'Rails_helper'
describe ApplicationHelper do
...
end
bonne chance.