RSpec::Matchers.define :object_having do |expected_klass, expected_attributes| match do |actual_object| expect(actual_object).to be_a(expected_klass) expected_attributes.each do |method, expected_value| expect(actual_object).to respond_to(method) actual_value = actual_object.send(method) expect(actual_value).to eq(expected_value) end end end