When I added the development module to my rails application, my thwors error tests
73) Error: test_should_update_task(TasksControllerTest): ActionView::Template::Error: undefined method `authenticate' for nil:NilClass /home/razor/.gem/ruby/1.9.1/gems/devise-2.1.2/lib/devise/controllers/helpers.rb:56:in `current_user' /home/razor/.gem/ruby/1.9.1/gems/devise-2.1.2/lib/devise/controllers/helpers.rb:52:in `user_signed_in?' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/abstract_controller/helpers.rb:53:in `user_signed_in?' /home/razor/work/judgement/app/views/layouts/application.html.erb:11:in `_app_views_layouts_application_html_erb___67557477041607610_29516700' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_view/template.rb:145:in `block in render' /home/razor/.gem/ruby/1.9.1/gems/activesupport-3.2.6/lib/active_support/notifications.rb:123:in `block in instrument' /home/razor/.gem/ruby/1.9.1/gems/activesupport-3.2.6/lib/active_support/notifications/instrumenter.rb:20:in `instrument' /home/razor/.gem/ruby/1.9.1/gems/activesupport-3.2.6/lib/active_support/notifications.rb:123:in `instrument' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_view/template.rb:143:in `render' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_view/renderer/template_renderer.rb:59:in `render_with_layout' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_view/renderer/template_renderer.rb:45:in `render_template' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_view/renderer/template_renderer.rb:18:in `render' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_view/renderer/renderer.rb:36:in `render_template' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_view/renderer/renderer.rb:17:in `render' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/abstract_controller/rendering.rb:110:in `_render_template' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_controller/metal/streaming.rb:225:in `_render_template' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/abstract_controller/rendering.rb:103:in `render_to_body' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_controller/metal/renderers.rb:28:in `render_to_body' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_controller/metal/compatibility.rb:50:in `render_to_body' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/abstract_controller/rendering.rb:88:in `render' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_controller/metal/rendering.rb:16:in `render' /home/razor/.gem/ruby/1.9.1/gems/actionpack-3.2.6/lib/action_controller/metal/instrumentation.rb:40:in `block (2 levels) in render' /home/razor/.gem/ruby/1.9.1/gems/activesupport-3.2.6/lib/active_support/core_ext/benchmark.rb:5:in `block in ms' 93 tests, 36 assertions, 0 failures, 73 errors, 0 skips Errors running test:functionals!
where application.html.erb
<!DOCTYPE html> <html> <head> <title>Judgement</title> <%= stylesheet_link_tag "application", :media => "all" %> <%= javascript_include_tag "application" %> <%= csrf_meta_tags %> </head> <body> <nav> <% if user_signed_in? then %> <%= link_to "You are #{current_user.email}", edit_user_registration_path %> <%= link_to "Exit", destroy_user_session_path, { :method => :delete, :confirm => "Are you sure"} %> <% else %> <%= link_to "Sign In", new_user_session_path %> <%= link_to "Register", new_user_registration_path %> <% end %> </nav> <%= yield %> <div class="notice"> <%= notice %> </div> <div class="alert"> <%= alert %> </div> </body> </html>
So this seems like an error because "user_signed_in?" assistant. But I can’t understand what the mistake is.
I am not very familiar with all the magic of Rails.
UPD: SOLVED
I needed to add
class ActionController::TestCase include Devise::TestHelpers end
to my test / test_helper.rb
source share