Forum: RSpec How do you mock an object to expect A then B then A?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Nigel T. (Guest)
on 2009-04-14 07:32
(Received via mailing list)
Hi Folks,

I want to assert on an order of interaction between two objects where
one
method gets repeated.

Here is a simple example...

# this fails "Mock 'x' expected :a with (any args) once, but received it
twice"

x = mock("x")
x.should_receive(:a).once.ordered
x.should_receive(:b).once.ordered
x.should_receive(:a).once.ordered

x.a
x.b
x.a


http://gist.github.com/94849

Am I setting up the ordered expectations incorrectly, or is this a bug?

Cheers
Nigel
Nigel T. (Guest)
on 2009-04-14 07:34
(Received via mailing list)
Hi Folks,

I want to assert on an order of interaction between two objects where
one
method gets repeated.

Here is a simple example...

# this fails "Mock 'x' expected :a with (any args) once, but received it
twice"
x = mock("x")
x.should_receive(:a).once.ordered
x.should_receive(:b).once.ordered
x.should_receive(:a).once.ordered

x.a
x.b
x.a


http://gist.github.com/94849

Am I setting up the ordered expectations incorrectly, or is this a bug?

Cheers
Nigel
Doug L. (Guest)
on 2009-04-14 13:31
(Received via mailing list)
Could be wrong, but what about removing the stipulation that each call
should be received once?
Is that superfluous to requirements, there? I think so.
You've already specified three calls in order, so that should cover it.

2009/4/14 Nigel T. <removed_email_address@domain.invalid>
Nigel T. (Guest)
on 2009-04-15 03:21
(Received via mailing list)
In my case I need to specify this behaviour. (I'm making sure the
logging
happens in the right order).

I believe it really is a bug, so I have forked rspec (on github),
written a
failing test and fixed my version of rspec to handle this case.

My version now matches against unsatisfied expectations in preference to
satisfied ones.

I'm not sure what the next step is in contributing a patch back..I guess
I
raise a ticket in lighthouse.

2009/4/14 doug livesey <removed_email_address@domain.invalid>
Doug L. (Guest)
on 2009-04-15 10:41
(Received via mailing list)
> I'm not sure what the next step is in contributing a patch back.
Me either, but I salute your go-to attitude & community-mindedness!

2009/4/15 Nigel T. <removed_email_address@domain.invalid>
This topic is locked and can not be replied to.