Tim,There is a bug all right. The default behavior now is Repeat.Any
If it wasn't, I would say that it is expected, since only the first call is
expected. But 1 & 3 should be the same.

On Mon, Aug 24, 2009 at 2:20 AM, Tim Barcz <[email protected]> wrote:

> There seems to be a bug in the code below however I am not sure what the
> "appropriate" behavior should be.  (I came across this about a month ago
> digging into a problem on this board).  I am willing to attempt a fix if
> there is one needed and I know what the proper behavior should be.  The code
> is very simple and provided below.
>
> I'm testing what the difference between Stub and Expect calls are on mocks
> and what happens when you call.  The output for the code below returns
> (you'll notice a "hole) where "mockFoo called" should be printed:
>
> mockFoo called
>>
>> mockFoo2 called
>> mockFoo2 called
>> mockFoo2 called
>> mockFoo2 called
>
>
> *At this point I'm not sure what the "correct" behavior should be.  Should
> Expect(<method) only set up a single-use return?  Is there a bug here?*
>
> [Test]
> public void HowManyTimesCanAFakeBeCalledAndReturnTheSameValue()
> {
>     // The interesting thing here is that the first mock (mockFoo) does is
> only good for one call.
>     // Something about the Arg<string>.Is.Anything causes the return value
> to be good for only one call
>     // this seems to be a bug when compared to other implementations (Stub
> allows multiple calls on the object
>     // while returning the same value)
>     var mockFoo = MockRepository.GenerateMock<IFoo>();
>     var mockFoo2 = MockRepository.GenerateMock<IFoo>();
>     var mockFoo3 = MockRepository.GenerateMock<IFoo>();
>
>     mockFoo.Expect(x => x.Method(Arg<string>.Is.Anything)).Return("mockFoo
> called");
>     mockFoo2.Expect(x => x.Method(null)).IgnoreArguments().Return("mockFoo2
> called");
>     mockFoo3.Expect(x =>
> x.Method(Arg<string>.Is.Anything)).Return("mockFoo3 called").Repeat.Any();
>
>     Debug.WriteLine(mockFoo.Method("hello"));
>     Debug.WriteLine(mockFoo.Method("hello"));
>
>     Debug.WriteLine(mockFoo2.Method("hello"));
>     Debug.WriteLine(mockFoo2.Method("hello"));
>
>     Debug.WriteLine(mockFoo2.Method("hello"));
>     Debug.WriteLine(mockFoo2.Method("hello"));
> }
>
> public interface IFoo
> {
>     string Method(string arg);
> }
>
>
> --
> Tim Barcz
> ASPInsider
> http://timbarcz.devlicio.us
> http://www.twitter.com/timbarcz
>
>
> >
>

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