title: RSpec Test of Custom Devise Session Controller Fails with AbstractController::ActionNotFound
body: <p>I am currently trying to test a custom Devise session controller with rspec. My controller looks like this:</p>
  
  <pre><code>class SessionsController &lt; Devise::SessionsController
  
    def create 
      #valid email?
      if !(params[:email] =~ /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/)
        set_flash_message :notice, "Please enter a valid e-mail address!"
      end
  
      super
    end
  end
  </code></pre>
  
  <p>My RSpec Controller Test is this:</p>
  
  <pre><code>require 'spec_helper'
  require 'devise/test_helpers'
  
  describe SessionsController do  
  
    it "should put a warning on invalid mail address login attempt" do
      post :create, :user =&gt; {:email =&gt; 'invalidEmailAddress'}
      response.should contain "Please enter a valid e-mail address!"
    end
  
    it "should put no warning on valid mail address login attempt" do
      pending
    end
  end
  </code></pre>
  
  <p>If I execute the RSpec Test it fails with the following line:</p>
  
  <pre><code>Failure/Error: post :new, :user =&gt; {:email =&gt; 'invalidEmailAddress'}
       AbstractController::ActionNotFound
       # ./spec/controllers/sessions_controller_spec.rb:7
  </code></pre>
  
  <p>Tips from the plataformatec Devise Wiki as well as <a href="http://groups.google.com/group/plataformatec-devise/browse_thread/thread/9bd524e5358a8197" rel="noreferrer">this post</a> did not solve this issue. Thanks for your help.</p>
  
  <p><strong>Addition</strong></p>
  
  <p>I investigated further. I was actually able to "remove" the error with the following addition to the controller spec:</p>
  
  <pre><code>before(:each) do
    request.env['devise.mapping'] = Devise.mappings[:user]
  end
  </code></pre>
  
  <p>But now a new error appears:</p>
  
  <pre><code>Failure/Error: post :create  #currently fails with multiple render warning
  Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".
  </code></pre>
  
  <p>Even with the create method left out in the inheriting controller the error appears. The error does not appear on get :new for example. It seems to be post :create only.
  I am out of ideas? Any help?
  Thanks!</p>