diff --git a/CHANGELOG.md b/CHANGELOG.md index c21390705..fe4a3a5f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Master + +* `assert_requested` and `assert_not_requested` raise an error if a stub object is provided together with a block. + ## 1.9.3 * Fixed issue with unavailable constant Mutex in Ruby < 1.9 diff --git a/lib/webmock/api.rb b/lib/webmock/api.rb index f6ce84427..1275aafb4 100644 --- a/lib/webmock/api.rb +++ b/lib/webmock/api.rb @@ -21,15 +21,19 @@ class << self def assert_requested(*args, &block) if not args[0].is_a?(WebMock::RequestStub) args = convert_uri_method_and_options_to_request_and_options(*args, &block) + elsif block + raise ArgumentError, "assert_requested with a stub object, doesn't accept blocks" end - assert_request_requested(*args, &block) + assert_request_requested(*args) end def assert_not_requested(*args, &block) if not args[0].is_a?(WebMock::RequestStub) args = convert_uri_method_and_options_to_request_and_options(*args, &block) + elsif block + raise ArgumentError, "assert_not_requested with a stub object, doesn't accept blocks" end - assert_request_not_requested(*args, &block) + assert_request_not_requested(*args) end def hash_including(expected) diff --git a/test/shared_test.rb b/test/shared_test.rb index ff70fe8de..f73294551 100644 --- a/test/shared_test.rb +++ b/test/shared_test.rb @@ -9,6 +9,18 @@ def setup @stub_https = stub_http_request(:any, "https://www.example.com") end + def test_assert_requested_with_stub_and_block_raises_error + assert_raise ArgumentError do + assert_requested(@stub_http) {} + end + end + + def test_assert_not_requested_with_stub_and_block_raises_error + assert_raise ArgumentError do + assert_not_requested(@stub_http) {} + end + end + def test_error_on_non_stubbed_request default_ruby_headers = (RUBY_VERSION >= "1.9.1") ? "{'Accept'=>'*/*', 'User-Agent'=>'Ruby'}" : "{'Accept'=>'*/*'}" assert_raise_with_message(WebMock::NetConnectNotAllowedError, %r{Real HTTP connections are disabled. Unregistered request: GET http://www.example.net/ with headers}) do