I'll toss in my two cents....

If it's a strict mock, should throw an exception....
If it's a dynamic mock this is expected.

If we start treating the syntax different between strict and dynamic mocks I
think the learning curve goes up.  Right now the differences in behavior lie
within which mock object you use and NOT the syntax you use on the mock,
which is how I personally prefer it.

Tim

On Fri, Feb 13, 2009 at 8:23 AM, ssteinegger <[email protected]> wrote:

>
> You're right, I didn't say how it _should_ be, just how it probably
> _is_.
> But I could be wrong and it's actually a bug.
>
> On 13 Feb., 14:30, andreister <[email protected]> wrote:
> > Yes, but VerifyAllExpectations should address that some method was
> > called *more* than expected.
> >
> > Otherwise Times(x) should have been called "AtLeast(x)" !
> >
> > On Feb 13, 1:58 pm, ssteinegger <[email protected]> wrote:
> >
> > > MockRepository.GenerateMock creates a dynamic mock, which allows calls
> > > that weren't expected. To do this I think you'll need a strict mock
> > > which cannot be created with the static repository.
> >
> > > On 13 Feb., 10:43, andreister <[email protected]> wrote:
> >
> > > > The previous post "Assert # of times a method was called" brings me
> to
> > > > the following scenario
> >
> > > > ==================================================
> > > > [Test]
> > > > public void Test()
> > > > {
> > > >     var foo = MockRepository.GenerateMock<IFoo>();
> > > >     foo.Expect(x => x.Bar()).Repeat.Times(5);
> >
> > > >     Boo.Run(foo, 4);
> >
> > > >     foo.VerifyAllExpectations();
> >
> > > > }
> >
> > > > public class Boo
> > > > {
> > > >     public static void Run(IFoo foo, int total)
> > > >     {
> > > >         for (int i = 0; i < total; i++) { foo.Bar(); }
> > > >     }
> >
> > > > }
> >
> > > > public interface IFoo
> > > > {
> > > >     void Bar();}
> >
> > > > ==================================================
> >
> > > > Obviously, it fails with "Expected #5, Actual #4."
> >
> > > > However, if we change ".Repeat.Times(5);" to ".Repeat.Times(2);" it
> > > > passes!!? (I would expect a failure with "Expected #2, Actual #4.")
> >
> > > > It looks like "as designed" behavior, since
> > > > UnorderedMethodRecorder.DoGetRecordedExpectationOrNull (
> https://rhino-
> > > > tools.svn.sourceforge.net/svnroot/rhino-tools/trunk/rhino-mocks/
> > > > Rhino.Mocks/MethodRecorders/UnorderedMethodRecorder.cs) relies on
> > > > "triplet.Expectation.CanAcceptCalls" that is NOT updated for EVERY
> > > > call... But it's quite confusing.
> >
> >
> >
>

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