Testowanie widoków używających Devise z RSpec
Próbuję uzyskać poprzednio przekazywaną „specyfikację widoku” rspec po dodaniu Deviseuser_signed_in?
metoda do danego szablonu widoku. Szablon wygląda mniej więcej tak:
<% if user_signed_in? %>
Welcome back.
<% else %>
Please sign in.
<% endif %>
Specyfika widokubyło mijanie wygląda mniej więcej tak:
require "spec_helper"
describe "home/index.html.erb" do
it "asks you to sign in if you are not signed in" do
render
rendered.should have_content('Please sign in.')
end
end
Błąd generowany po dodaniu wywołania douser_signed_in?
jest:
1) home/index.html.erb asks you to sign in if you are not signed in
Failure/Error: render
ActionView::Template::Error:
undefined method `authenticate' for nil:NilClass
# ./app/views/home/index.html.erb:1:in `_app_views_home_index_html_erb__1932916999377371771_70268384974540'
# ./spec/views/home/index.html.erb_spec.rb:6:in `block (2 levels) in <top (required)>'
Istnieje wiele odniesień do tego błędu w sieci, ale nie znalazłem jeszcze wystarczająco opisowej odpowiedzi, aby móc ponownie przejść test. Uważam, że problem ma coś wspólnego z widokiem (który jest testowany w oderwaniu od jakichkolwiek modeli / kontrolerów), nie mając dostępnej kluczowej infrastruktury Devise. Twoje sugestie są mile widziane.
Ponadto, jak test zakończy się pomyślnie, jak przetestuję inną ścieżkę (użytkownik już się zalogował)? Przypuszczam, że będzie bardzo podobny. Dzięki.