Forum: RSpec Mock should receive no messages?

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.
Sebastian W. (Guest)
on 2009-06-03 21:46
Hello all,
Is there a way to explicitly tell a mock to expect no messages and give
an error if it does? I believe this is the default behavior, but thought
it might be nice for code readers to see.

Thank you!
David C. (Guest)
on 2009-06-03 22:09
(Received via mailing list)
On Wed, Jun 3, 2009 at 12:46 PM, Sebastian W. 
<removed_email_address@domain.invalid>
wrote:
> Hello all,
> Is there a way to explicitly tell a mock to expect no messages and give
> an error if it does? I believe this is the default behavior, but thought
> it might be nice for code readers to see.

You can tell it to expect not to receive a specific message, but there
is no way to say that it should not receive any messages.

Cheers,
David
Sebastian W. (Guest)
on 2009-06-03 22:19
David C. wrote:
> On Wed, Jun 3, 2009 at 12:46 PM, Sebastian W. <removed_email_address@domain.invalid>
> wrote:
>> Hello all,
>> Is there a way to explicitly tell a mock to expect no messages and give
>> an error if it does? I believe this is the default behavior, but thought
>> it might be nice for code readers to see.
>
> You can tell it to expect not to receive a specific message, but there
> is no way to say that it should not receive any messages.
>
> Cheers,
> David

Okay, cool - feature request? : )
Rick D. (Guest)
on 2009-06-03 22:29
(Received via mailing list)
On Wed, Jun 3, 2009 at 2:01 PM, David C. <removed_email_address@domain.invalid>
wrote:
> On Wed, Jun 3, 2009 at 12:46 PM, Sebastian W. <removed_email_address@domain.invalid> 
wrote:
>> Hello all,
>> Is there a way to explicitly tell a mock to expect no messages and give
>> an error if it does? I believe this is the default behavior, but thought
>> it might be nice for code readers to see.
>
> You can tell it to expect not to receive a specific message, but there
> is no way to say that it should not receive any messages.

Maybe not explicitly but doesn't isn't making a mock with no
expectations effectively the same thing:

describe "an object which should not get any messages" do
  it "should not receive any messages" do
    o = mock("Object")
    o.foo
  end
end

Mock 'Object' received unexpected message :foo with (no args)


--
Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale
David C. (Guest)
on 2009-06-03 22:34
(Received via mailing list)
On Wed, Jun 3, 2009 at 1:26 PM, Rick DeNatale 
<removed_email_address@domain.invalid>
wrote:
> Maybe not explicitly but doesn't isn't making a mock with no
> expectations effectively the same thing:
>
> describe "an object which should not get any messages" do
>  it "should not receive any messages" do
>    o = mock("Object")
>    o.foo
>  end
> end
>
> Mock 'Object' received unexpected message :foo with (no args)

Right - Sebastian noted that in the original post - but he's looking
for something explicit.
Rick D. (Guest)
on 2009-06-03 22:40
(Received via mailing list)
On Wed, Jun 3, 2009 at 2:30 PM, David C. <removed_email_address@domain.invalid>
wrote:
>>
>> Mock 'Object' received unexpected message :foo with (no args)
>
> Right - Sebastian noted that in the original post - but he's looking
> for something explicit.

Well how about:

describe "an object which should not get any messages" do
  it "should not receive any messages" do
    o = mock("Object")
    o.should_not_receive(:a_damned_thing)
    o.foo
  end
end

<G>


--
Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale
David C. (Guest)
on 2009-06-03 22:44
(Received via mailing list)
On Wed, Jun 3, 2009 at 1:19 PM, Sebastian W. 
<removed_email_address@domain.invalid>
wrote:
>>
>> Cheers,
>> David
>
> Okay, cool - feature request? : )

You never have to ask to make a feature request - just make one:

http://rspec.lighthouseapp.com
Pat M. (Guest)
on 2009-06-05 04:55
(Received via mailing list)
On Wed, Jun 3, 2009 at 10:46 AM, Sebastian W. 
<removed_email_address@domain.invalid>
wrote:
> Hello all,
> Is there a way to explicitly tell a mock to expect no messages and give
> an error if it does? I believe this is the default behavior, but thought
> it might be nice for code readers to see.

Document it in the mock object's name.

my_mock = mock('never receives a message')

I don't see any reason why something should be added to RSpec core.

Pat
This topic is locked and can not be replied to.