Can't seem to test http error codes


#1

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


#2

On 17 Nov 2008, at 16:39, davetron5000 wrote:

{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


#3

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

On Nov 17, 11:54 am, Frederick C. removed_email_address@domain.invalid