diff --git a/lib/rspec/support/differ.rb b/lib/rspec/support/differ.rb index b2afa688..fcc9bfd0 100644 --- a/lib/rspec/support/differ.rb +++ b/lib/rspec/support/differ.rb @@ -58,20 +58,26 @@ def diff_as_string(actual, expected) end # rubocop:enable Metrics/MethodLength - def diff_hashes_as_object(actual, expected) - if defined?(RSpec::Mocks::ArgumentMatchers::AnyArgMatcher) - expected_to_diff = - expected.reduce({}) do |hash, (key, value)| - if RSpec::Mocks::ArgumentMatchers::AnyArgMatcher === value - hash[key] = actual[key] - else - hash[key] = expected[key] + if defined?(RSpec::Mocks::ArgumentMatchers::AnyArgMatcher) + def diff_hashes_as_object(actual, expected) + if defined?(RSpec::Mocks::ArgumentMatchers::AnyArgMatcher) + expected_to_diff = + expected.reduce({}) do |hash, (key, value)| + if RSpec::Mocks::ArgumentMatchers::AnyArgMatcher === value + hash[key] = actual[key] + else + hash[key] = expected[key] + end + hash end - hash - end - diff_as_object(actual, expected_to_diff) - else + diff_as_object(actual, expected_to_diff) + else + diff_as_object(actual, expected) + end + end + else + def diff_hashes_as_object(actual, expected) diff_as_object(actual, expected) end end