[mocha-developer] Returning the mock associated with an expectation.

James Mead jamesmead44 at gmail.com
Sun Nov 4 15:19:17 EST 2007


On 04/11/2007, Duncan Beevers <duncanbeevers at gmail.com> wrote:
>
> I was reading through the FlexMock docs and noticed the expectation
> method .mock, which returns the original mock associated with an
> expectation.
>
> It looks really handy for writing nice all-in-one mocks like:
>
> mock_user = mock('User').expects(:first_name).returns('Jonah').mock
>
> So I started playing around with mocha and found I could actually
> already do this!
> But I'm not sure how.  There's no attr_reader on @mock, and I couldn't
> find out where this method is defined.
>
> So, perhaps we could add this an explicit method on Expectation and
> include a little rdoc on it?
> I think a lot of people would get benefit from making this explicit.
>
> Opinions?
>

Hmm. I think this may have disappeared in some recent refactoring in trunk.
Rather than exposing too much of the internals, I keep meaning to add a
syntax like this...

  mock_user = mock('User') {
    expects(:first_name).returns('James')
    stubs(:last_name).returns('Mead')
  }

Would that help you do what you want to do...?

Alternatively did you know you could already do...

  mock_user = mock('User', :first_name => 'James', :last_name => 'Mead')

However there are a couple of limitations with this - you can't mix expects
& stubs and you can't specify anything other than a returns() e.g. no
with(), no raises(), etc.


What do you think?
-- 
James.
http://blog.floehopper.org
http://tumble.floehopper.org


More information about the mocha-developer mailing list