Can't seem to test http error codes

in application.rb

  rescue_from ActiveRecord::RecordNotFound { |e| http_status_code (:missing, e) }

  def http_status_code(status, exception)     @exception = exception     respond_to do |format|       format.html { render :template => "shared/status_# {status.to_s}", :status => status }       format.any { head status }     end   end

in a controller

    project = Project.find(params[:id])

in my test

  def test_bad_project     put :update, :id => KNOWN_BAD_ID     assert_response(:missing)   end

The result is that I get a 500 every time.

Any clues as to whats' going on? There's nothing in the log to explain the 500 I get during tests; the application controller seems to be detecting the exception and setting the status to 404, but my tests get 500.

Dave

in application.rb

rescue_from ActiveRecord::RecordNotFound { |e| http_status_code (:missing, e) }

def http_status_code(status, exception)    @exception = exception    respond_to do |format|      format.html { render :template => "shared/status_# {status.to_s}", :status => status }      format.any { head status }    end end

IIRC the test harness snarfs the exception before it gets to your
exception handler.

Fred

The exception handler IS getting called (I put log statements in and they appear in test.log).

In previous versions of rails, there seemed to be some sort of magic where a non-200 http response gets turned into a 500 for development, but not production. Is that the case, and if so, how do I deal with this? I need to test that the correct http responses are being sent...

Dave