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 -~----------~----~----~----~------~----~------~--~---
