Skip to content
Browse files

assert_response failures include the exception message. Closes #10688.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8559 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 5ccc3cf commit 3464a7e79c373947ea7d57c543e36f41bd62049e @jeremy jeremy committed Jan 5, 2008
View
2 actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* assert_response failures include the exception message. #10688 [Seth Rasmussen]
+
* All fragment cache keys are now by default prefixed with the "views/" namespace [DHH]
* Moved the caching stores from ActionController::Caching::Fragments::* to ActiveSupport::Cache::*. If you're explicitly referring to a store, like ActionController::Caching::Fragments::MemoryStore, you need to update that reference with ActiveSupport::Cache::MemoryStore [DHH]
View
6 actionpack/lib/action_controller/assertions/response_assertions.rb
@@ -33,7 +33,11 @@ def assert_response(type, message = nil)
elsif type.is_a?(Symbol) && @response.response_code == ActionController::StatusCodes::SYMBOL_TO_STATUS_CODE[type]
assert_block("") { true } # to count the assertion
else
- assert_block(build_message(message, "Expected response to be a <?>, but was <?>", type, @response.response_code)) { false }
+ if @response.error?
+ assert_block(build_message(message, "Expected response to be a <?>, but was <?>\n<?>", type, @response.response_code, @response.template.instance_variable_get(:@exception).message)) { false }
+ else
+ assert_block(build_message(message, "Expected response to be a <?>, but was <?>", type, @response.response_code)) { false }
+ end
end
end
end
View
18 actionpack/test/controller/action_pack_assertions_test.rb
@@ -124,6 +124,15 @@ def full_messages; ['...stuff...']; end
def rescue_action(e) raise; end
end
+# Used to test that assert_response includes the exception message
+# in the failure message when an action raises and assert_response
+# is expecting something other than an error.
+class AssertResponseWithUnexpectedErrorController < ActionController::Base
+ def index
+ raise 'FAIL'
+ end
+end
+
module Admin
class InnerModuleController < ActionController::Base
def index
@@ -465,6 +474,15 @@ def test_assert_valid_failing
rescue Test::Unit::AssertionFailedError => e
end
end
+
+ def test_assert_response_uses_exception_message
+ @controller = AssertResponseWithUnexpectedErrorController.new
+ get :index
+ assert_response :success
+ flunk 'Expected non-success response'
+ rescue Test::Unit::AssertionFailedError => e
+ assert e.message.include?('FAIL')
+ end
end
class ActionPackHeaderTest < Test::Unit::TestCase

0 comments on commit 3464a7e

Please sign in to comment.
Something went wrong with that request. Please try again.