Nat, I really appreciate the fact that you took the time to respond in detail. Thanks!! Just curious, is the reason you never found a need for this because you confirm in your tests every call made by the object-under-test to the mock? Our situation is that we are mocking UI objects that get called from a controller (as in model-view-controller). Because it is user-interface intensive, there are often a lot of calls made to the mocks. Some of the calls are more important than others in verifying that the object-under-test is behaving as it should. Hence our desire to selectively set expectations.
Also, do you use jMock to test anonymous classes? If so, how do you do that?
-----Original Message-----
From: Nat Pryce [mailto:
nat.pryce@...]
Sent: Friday, March 27, 2009 6:35 PM
To:
user@...
Subject: Re: [jmock-user] Ignoring all mock method calls EXCEPT certain ones
Sorry about the lack of detail in my last mail. I sent it from my
iPhone and it's not easy to write lots of text.
The following link describes how jMock dispatches a method calls to
expectations and explains why oneOf and allowing don't interact how
you expect.
http://www.jmock.org/dispatch.htmlThe following link explains how you can use Matchers to specify which
mock objects and methods match an expectation. You can use that to
match all methods of a mock object except those you've already
specified expectations for.
http://www.jmock.org/match-object-or-method.htmlIt's not ideal: jMock could perhaps have an API call to let a test
easily specify "all other methods of object o". It's not something
that I've ever found a need for in practice so I've never considered
it. I'll have a think about how it could be implemented.
--Nat
http://www.natpryce.com2009/3/27 Lawson, Robert W <
robert.w.lawson@...>:
> Thanks for the reply Nat, but I don't understand how these links help to
> solve my problem. Would you be able to modify the example I gave below to
> show me what you mean? Thanks!
>
>
>
> From: Nat Pryce [mailto:
nat.pryce@...]
> Sent: Friday, March 27, 2009 3:42 PM
> To:
user@...
> Cc:
user@...; Romano, Anthony D
> Subject: Re: [jmock-user] Ignoring all mock method calls EXCEPT certain ones
>
>
>
> Please read
>
>
>
>
http://www.jmock.org/dispatch.html>
>
>
> And
>
>
>
>
http://www.jmock.org/match-object-or-method.html>
>
>
> Cheers,
>
> Nat
>
> www.natpryce.com
>
> On 27 Mar 2009, at 15:15, "Lawson, Robert W" <
robert.w.lawson@...>
> wrote:
>
> I want to set an expectation that a particular method (or methods) on a mock
> are called, but ignore any other methods that are called on that mock. I've
> read some posts that say this is easily done by something like:
>
> oneOf (foo).doIt(45);
>
> ignoring (foo);
>
> However, this ignores all calls to the foo mock, including the doIt()
> method. The only thing I can do right now to get my test to work is to not
> use ignoring, and set an expectation on EVERY method of foo that is called.
> If I don't, when any method other than doIt() is called, an unexpected
> method invocation exception is thrown.
>
> I'm sure there has to be an easy answer to this. Can anyone help?
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email