Il mio codice di supporto si presenta così (e funziona bene btw):aiutanti test in Rails 3 con Rspec 2 e mettere a punto
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
Purtroppo, questo produce il seguente errore quando ho eseguito il mio test:
undefined method `user_signed_in?' for #<ActionView::Base:0x00000106314640>
# ./app/helpers/providers_helper.rb:3:in `call_to_review'
Chiaramente il Devise::Controllers::Helpers
non viene incluso nei miei helper quando rspec sta eseguendo il test. Qualche suggerimento che potrebbe aiutare questo lavoro?
Edit: per fornire un po 'più di informazioni, la mia spec_helper non ha questo:
config.include Devise::TestHelpers, :type => :controller
config.include Devise::TestHelpers, :type => :view
config.include Devise::TestHelpers, :type => :helper
(Purtroppo, non ho potuto farlo funzionare con :type => [:controller, :view, :helper]
)
Comunque credo che queste righe aggiungere gli aiutanti di test sign_in(scope, object)
(e altri) ai test. Non aggiungono gli helper che effettivamente faranno leva sul tuo controller/codice di visualizzazione.
Anche io sto avendo questo problema.Sono molto interessato alla risposta. Cose come "current_user" non esistono quando eseguo il test. Probabilmente è lo stesso problema che stai riscontrando. Questa è l'unica cosa che non mi piace dei linguaggi dinamici - a volte c'è un sacco di metaprogrammazione e 'magia' in corso ... e non hai idea di cosa devi chiamare per ottenere il risultato desiderato ... così finisci su sprecando un'ora di tempo cercando il metodo da chiamare per fare un test pass, sconfiggendo in questo modo i vantaggi di produttività dell'uso del linguaggio dinamico:/ – egervari
Ecco un altro esempio di questo problema: NameError: variabile locale o metodo non definito 'current_user 'per # –
egervari
Ho iniziato una taglia per la tua domanda. Spero che la persona che risponde risolva anche il mio problema allo stesso tempo. – egervari