Warning (but not failing) if a method wasn't called?

Is there a way to warn but not fail if a particular method wasn’t
called? That is, I’m looking for something that’s halfway between
obj.stub(…) and obj.should_receive(…). I’m trying to do something
like this:

shared_context “with a stubbed geocoder” do
before(:each) do
@geocoding_client = Geocoding::FakeGeoClient.new

# generate warning if the spec doesn't cause a hit to 

Geocoding.client
Geocoding.warn_if_not_received(:client).and_return(@geocoding_client)
end
end

~ jf

John F.
Principal Consultant, BitsBuilder
LI: http://www.linkedin.com/in/johnxf
SO: http://stackoverflow.com/users/75170/

On Wed, Sep 7, 2011 at 6:08 AM, John F.
[email protected]wrote:

Geocoding.warn_if_not_received(:client).and_return(@geocoding_client)
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Why would you want a warn? I can’t get my head around this.

On Sep 7, 2011, at 7:08 AM, John F. wrote:

Geocoding.warn_if_not_received(:client).and_return(@geocoding_client)
end
end

There’s no support for this in rspec-mocks. You can do the following,
but I would not recommend it:

before do
@geocoding_received_client = false
Geocoding.stub(:client) do
@geocoding_received_client = true
@geocoding_client
end
end

after do
warn “Geocoding did not receive :client” unless
@@geocoding_received_client
end

Cheers,
David