From 41217bf43b5159036a473ca77b42f0a45c67c954 Mon Sep 17 00:00:00 2001 From: Myron Marston Date: Wed, 21 Aug 2013 08:25:41 -0700 Subject: [PATCH] Improve space spec. - The old spec only checked the number of proxies returned, and didn't actually check that it returned the right ones. - The old spec only tested who were instances of the given class, and did not check instances of subclasses. --- spec/rspec/mocks/space_spec.rb | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/spec/rspec/mocks/space_spec.rb b/spec/rspec/mocks/space_spec.rb index 2ffa112ca..774416217 100644 --- a/spec/rspec/mocks/space_spec.rb +++ b/spec/rspec/mocks/space_spec.rb @@ -6,16 +6,25 @@ module RSpec::Mocks describe "#proxies_of(klass)" do let(:space) { Space.new } - before do - space.proxy_for(Object.new) - space.proxy_for(Object.new) - space.proxy_for(Array.new) - space.proxy_for(String.new) + it 'returns proxies' do + space.proxy_for("") + expect(space.proxies_of(String).map(&:class)).to eq([PartialMockProxy]) end - it 'returns the proxies for objects of the same type as klass' do - expect(space.proxies_of(String).size).to eq 1 - expect(space.proxies_of(String)).to be_all { |obj| obj.is_a? RSpec::Mocks::PartialMockProxy } + it 'returns only the proxies whose object is an instance of the given class' do + grandparent_class = Class.new + parent_class = Class.new(grandparent_class) + child_class = Class.new(parent_class) + + grandparent = grandparent_class.new + parent = parent_class.new + child = child_class.new + + grandparent_proxy = space.proxy_for(grandparent) + parent_proxy = space.proxy_for(parent) + child_proxy = space.proxy_for(child) + + expect(space.proxies_of(parent_class)).to match_array([parent_proxy, child_proxy]) end end