[rspec-users] Adding Test Spy into Rspec mocking framework
pergesu at gmail.com
Mon Sep 15 08:49:11 EDT 2008
On Mon, Sep 15, 2008 at 8:43 AM, David Chelimsky <dchelimsky at gmail.com> wrote:
> On Mon, Sep 15, 2008 at 7:39 AM, Pat Maddox <pergesu at gmail.com> wrote:
>>> So I'm proposing the idea of adding 'should_have_received' and test_spy
>>> in Rspec:
>>> x = test_spy('like a mock but more into espionage')
>>> #Action which does not fail on unexpected method but just records calls.
>>> x.should_have_received(:method).and_returned_with('some string')
>> I actually started implementing this the day before Dan posted that.
>> It works, but I don't have all the nice error messages and stuff yet.
>> Will take me a couple days to get around to finishing it probably.
> Have you implemented this within the mock framework or as a separate concept?
It's just a new matcher. I did mess with the mock framework a little
in that I record calls every time it receives a message, rather than
only when it hits method_missing.
I will be restructuring the mock internals to better support this, I
think. But of course it won't change the public API, and mocks will
still have the fail-fast behavior by default if that's what you want.
Basic example of what I'm doing...
o = stub("stub", :foo => true)
It's not a true spy in the sense that it accepts any message (you can
use :null_object for that). My only desire here was to unify the
format of interaction-based tests with the arrange/act/assert format
typical of state-based tests.
More information about the rspec-users