Mi código ayudante se parece a esto (y funciona bien por cierto):ayudantes de prueba en Rails 3 con Rspec 2 e idear
module ProvidersHelper
def call_to_review(provider)
if user_signed_in? && review = Review.find_by_provider_id_and_user_id(provider.id, current_user.id)
link_to "Edit Your Review", edit_provider_review_path(provider, review), :class => "call_to_review"
else
link_to "Review This Provider", new_provider_review_path(provider), :class => "call_to_review"
end
end
end
Desafortunadamente, esto produce el siguiente error cuando ejecuto mis pruebas:
undefined method `user_signed_in?' for #<ActionView::Base:0x00000106314640>
# ./app/helpers/providers_helper.rb:3:in `call_to_review'
Claramente, el Devise::Controllers::Helpers
no se incluye en mis ayudantes cuando rspec está ejecutando la prueba. ¿Alguna sugerencia que pueda ayudar a este trabajo?
Editar: para proporcionar un poco más de información, mi spec_helper tiene esto:
config.include Devise::TestHelpers, :type => :controller
config.include Devise::TestHelpers, :type => :view
config.include Devise::TestHelpers, :type => :helper
(Por desgracia, no pude conseguir que funcione con :type => [:controller, :view, :helper]
)
De todos modos creo que estas líneas agregue los sign_in(scope, object)
(y otros) ayudantes de prueba a sus pruebas. No agregan los ayudantes que realmente aprovecharías en tu código de controlador/vista.
Estoy teniendo este problema también.Estoy muy interesado en la respuesta. Cosas como 'current_user' no existen cuando ejecuto la prueba. Probablemente sea el mismo problema que estás teniendo. Esta es la única cosa que no me gusta de los lenguajes dinámicos: a veces hay una gran cantidad de metaprogramación y 'magia' en marcha ... y no tienes idea de lo que necesitas llamar para obtener el resultado deseado ... para que finalices desperdiciando una hora buscando el método para llamar para hacer una prueba, derrotando los beneficios de productividad de usar el lenguaje dinámico en primer lugar:/ – egervari
Aquí hay otro ejemplo de este problema: NameError: variable o método local indefinido 'current_user 'for # –
egervari
Comencé una recompensa por su pregunta. Espero que la persona que responde también resuelva mi problema al mismo tiempo. – egervari