I thought about giving my say earlier, but wasn't sure if anybody was
interested. I guess since Tim is asking:
I think adding something like Permit as a requirement to how many times
something is called is too similar to Repeat. I think this would make sense
to somebody that is already familiar with RM, but for people trying to
learn, I would imagine they would be more confused as when to use one or the
other.

Just my 2 cents.


On Tue, Aug 11, 2009 at 9:31 PM, Tim Barcz <[email protected]> wrote:

> I'm still not quite sure what the usage scenario is here.  It seems
> everything was working exactly the way one would expect, just some
> unfamiliarity about PartialMocks on Ben's part (no problem Ben, PartialMocks
> are a bit tricky as you've found out).
>
> I question the need to take this isolated incident and roll it into the
> framework.
>
> Others out there (I know you're watching).....what're your thoughts.
>
> Tim
>
>
> On Tue, Aug 11, 2009 at 7:01 PM, Ben M <[email protected]> wrote:
>
>>
>> oic.  Well would it be worthwhile to consider adding an alternative
>> mode to support this or perhaps the following syntax?
>>
>> Expect.Call(publisher.Send(null)).Permit.Once()
>>
>> :)
>>
>> thx
>> Ben
>>
>> On Aug 11, 4:38 pm, Ayende Rahien <[email protected]> wrote:
>> > Ben,Partial work in a very specific way, if a method is not intercepted,
>> it
>> > is expected that the real object will get it.
>> > As such, Repeat.Once() indicate how often this should be repeated, not
>> that
>> > only one call is permitted.
>> >
>> > On Wed, Aug 12, 2009 at 2:12 AM, Ben M <[email protected]> wrote:
>> >
>> > > yes, but doesnt this sort of defeat the purpose of using Repeat.Once
>> > > ()?
>> >
>> > > i mean if i'm using a strict or dynamic mock then i can use
>> Repeat.Once
>> > > () in this way, why then can i not do this w/ a partial?
>> >
>> > > On Aug 11, 4:08 pm, Ayende Rahien <[email protected]> wrote:
>> > > > Make a second call:
>> > > >  Expect.Call(_publisher.Send(null))
>> >
>> > > > >                     .IgnoreArguments()
>> > > > >                     .Return(true)
>> > > > >                     .Repeat.*Never()*;
>> > > > On Wed, Aug 12, 2009 at 2:05 AM, Ben M <[email protected]> wrote:
>> >
>> > > > > well, i made a discovery on this.  If you only tell it to repeat
>> once,
>> > > > > then the other calls will subsequently go to the actual real
>> method as
>> > > > > opposed to the mock version of the method.  So I've done a work
>> around
>> > > > > using Expect.Call().Do() and keeping my own count of the number of
>> > > > > calls, but this is something that in my opinion I should be able
>> to do
>> > > > > in Rhino mocks.  Does anyone know how to do this without having to
>> do
>> > > > > it myself?  Ayende?
>> >
>> > > > > On Aug 11, 2:48 pm, Ben M <[email protected]> wrote:
>> > > > > > I have a partial mock on a class I'll call 'Publisher'
>> >
>> > > > > > the publisher has a method called 'Publish' that in turn calls a
>> > > > > > virtual method called Send as follows:
>> >
>> > > > > > public class Publisher
>> > > > > > {
>> > > > > >      public bool Publish(MyList list)
>> > > > > >      {
>> > > > > >           string msg = _msgBuilder.BuildFrom(list);
>> > > > > >           bool success = Send(msg);
>> >
>> > > > > >           return success;
>> > > > > >     }
>> >
>> > > > > >      public virtual bool Send(string msg)
>> > > > > >      {
>> > > > > >             /// snip
>> > > > > >            return true;
>> > > > > >       }
>> >
>> > > > > > }
>> >
>> > > > > > my unit test then does the following:
>> > > > > >         [SetUp]
>> > > > > >         public void Setup()
>> > > > > >         {
>> >
>> > > > > >             _mocks = new MockRepository();
>> >
>> > > > > >             _publisher = _mocks.PartialMock<Publisher>();
>> >
>> > > > > >         }
>> >
>> > > > > > [Test]
>> > > > > > public void OnlyCallSendOnceForEmptyLists()
>> > > > > > {
>> > > > > >                 Expect.Call(_publisher.Send(null))
>> > > > > >                     .IgnoreArguments()
>> > > > > >                     .Return(true)
>> > > > > >                     .Repeat.Once;
>> >
>> > > > > >             _mocks.ReplayAll();
>> >
>> > > > > >             _publisher.Publish(new MyList());
>> > > > > >             _publisher.Publish(new MyList());
>> >
>> > > > > >             _mocks.VerifyAll();
>> >
>> > > > > > }
>> >
>> > > > > > I would expect this test to fail as it should be expecting no
>> more
>> > > > > > than 1 call, but the test is passing, and stepping thru the
>> debugger
>> > > I
>> > > > > > can see it IS in fact making 2 calls, yet the test still passes.
>> > >  What
>> > > > > > am I doing wrong that causes this test to give me a false
>> positive?
>> >
>> > > > > > thanks in advance
>> > > > > > Ben
>>
>>
>
>
> --
> Tim Barcz
> ASPInsider
> http://timbarcz.devlicio.us
> http://www.twitter.com/timbarcz
>
>
>
> >
>


-- 
Chris Missal
http://chrismissal.lostechies.com/

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Rhino.Mocks" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/RhinoMocks?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to