Even spamming a mailing list is challenging?

On Fri, Oct 10, 2008 at 8:34 AM, Tuna Toksöz <[EMAIL PROTECTED]> wrote:

> It makes you dig the code, this is the reason.
> And digging into a big codebase, even though painful, is a good challenge
> itself.
>
>
> On Fri, Oct 10, 2008 at 9:32 AM, Simone Busoli <[EMAIL PROTECTED]>wrote:
>
>> I'm wondering why he's struggling with the challenge you proposed if he
>> doesn't even know RhinoMocks.
>>
>>
>> On Fri, Oct 10, 2008 at 8:30 AM, Ayende Rahien <[EMAIL PROTECTED]> wrote:
>>
>>> The main issue that you have is understanding the current behavior, I
>>> think. Right now, for any method call done in the record stage, Rhino
>>> Mocks will return null. Expectations and setup return values are ignored
>>> until we get to the replay phase.
>>>
>>>
>>> On Fri, Oct 10, 2008 at 5:14 AM, webpaul <[EMAIL PROTECTED]> wrote:
>>>
>>>>
>>>> Ok, I think I've gotten somewhere.. The first one passes which makes
>>>> me think I can get the second one passing. The syntax is slightly
>>>> different than your initial request but I haven't looked into the
>>>> reason for that just yet.
>>>>
>>>>        [Test]
>>>>        public void CanCallPropertyAlternateSyntax()
>>>>        {
>>>>            var mockIdentity =
>>>> MockRepository.GenerateFluentMock<ISomeInterface>();
>>>>
>>>>            mockIdentity.Expect(x => x.Name).Return("foo");
>>>>
>>>>            Assert.AreEqual("foo", mockIdentity.Name);
>>>>        }
>>>>
>>>>        [Test]
>>>>         public void CanCallSomeRandomInterfaceProperty()
>>>>        {
>>>>            var mockService =
>>>> MockRepository.GenerateFluentMock<IMyService>();
>>>>
>>>>            mockService.Expect( x => x.Identity.Name).Return("foo");
>>>>
>>>>            Assert.AreEqual("foo", mockService.Identity.Name);
>>>>        }
>>>>
>>>>
>>>>
>>>> On Oct 9, 9:50 pm, webpaul <[EMAIL PROTECTED]> wrote:
>>>> > So here's another pair of tests, first not working (but I thought it
>>>> > would) and second not. So I'm guessing this is more than I originally
>>>> > thought it involved? Sorry for all the noobitude, I just don't have a
>>>> > strong grasp of exactly what is expected to already work since I don't
>>>> > use Rhino Mocks in any way except the expect-verify syntax.
>>>> >
>>>> >         [Test]
>>>> >         public void CanCallProperty()
>>>> >         {
>>>> >             var mockIdentity =
>>>> > MockRepository.GenerateMock<ISomeInterface>();
>>>> >
>>>> >             Expect.Call(mockIdentity.Name).Return("foo");
>>>> >             Assert.AreEqual("foo", mockIdentity.Name);
>>>> >         }
>>>> >
>>>> >         [Test]
>>>> >         public void NormalInterfaceCall()
>>>> >         {
>>>> >             MockRepository mocks = new MockRepository();
>>>> >             var mockIdentity = mocks.DynamicMock<ISomeInterface>();
>>>> >
>>>> >             With.Mocks(mocks).Expecting(delegate
>>>> >             {
>>>> >                 Expect.Call(mockIdentity.Name).Return("foo");
>>>> >             }).Verify(delegate
>>>> >             {
>>>> >                 Assert.AreEqual("foo", mockIdentity.Name);
>>>> >             });
>>>> >         }
>>>> >
>>>> > On Oct 9, 8:49 pm, webpaul <[EMAIL PROTECTED]> wrote:
>>>> >
>>>> >
>>>> >
>>>> > > Is it by design that the first test does not work (saying I need to
>>>> > > use property behavior, which is the second test which works)
>>>> >
>>>> > > Given this it seems it might be the same issue I am seeing in trying
>>>> > > to get this to work, proabbly a misunderstanding on how this is
>>>> > > supposed to work.
>>>> >
>>>> > >         [Test]
>>>> > >         public void NestedInterfaceCallWithExpect()
>>>> > >         {
>>>> > >             MockRepository mocks = new MockRepository();
>>>> > >             var mockService = mocks.Stub<IMyService>();
>>>> > >             var mockIdentity = mocks.Stub<ISomeInterface>();
>>>> >
>>>> > >             With.Mocks(mocks).Expecting(delegate
>>>> > >             {
>>>> >
>>>> > > Expect.Call(mockService.Identity).Return(mockIdentity);
>>>> > >                 Expect.Call(mockService.Identity.Name
>>>> ).Return("foo");
>>>> > >             }).Verify(delegate
>>>> > >             {
>>>> > >                 Assert.AreEqual("foo", mockService.Identity.Name);
>>>> > >             });
>>>> > >         }
>>>> >
>>>> > >         [Test]
>>>> > >         public void NestedInterfaceCall()
>>>> > >         {
>>>> > >             MockRepository mocks = new MockRepository();
>>>> > >             var mockService = mocks.Stub<IMyService>();
>>>> > >             var mockIdentity = mocks.Stub<ISomeInterface>();
>>>> >
>>>> > >             With.Mocks(mocks).Expecting(delegate
>>>> > >             {
>>>> > >                 mockService.Identity = mockIdentity;
>>>> > >                 mockService.Identity.Name = "foo";
>>>> > >             }).Verify(delegate
>>>> > >             {
>>>> > >                 Assert.AreEqual("foo", mockService.Identity.Name);
>>>> > >             });
>>>> > >         }
>>>> >
>>>> > > On Oct 9, 7:33 pm, webpaul <[EMAIL PROTECTED]> wrote:
>>>> >
>>>> > > > Ok, not a big deal. Any tips you can give about the code I posted
>>>> and
>>>> > > > where I might be going wrong?
>>>> >
>>>> > > > On Oct 9, 1:57 am, "Ayende Rahien" <[EMAIL PROTECTED]> wrote:
>>>> >
>>>> > > > > Yes, I do.You need to build from nant the first time you get the
>>>> code from
>>>> > > > > the repository. See how to build.txt for details
>>>> >
>>>> > > > > On Thu, Oct 9, 2008 at 6:01 AM, webpaul <[EMAIL PROTECTED]>
>>>> wrote:
>>>> >
>>>> > > > > > Here is what I have so far, which gives me "This action is
>>>> invalid
>>>> > > > > > when the mock object is in replay state" which seems to make
>>>> sense
>>>> > > > > > since I am trying to setup expectation while in the replay
>>>> state.
>>>> > > > > > Advice?
>>>> >
>>>> > > > > > MockRepository.cs
>>>> >
>>>> > > > > >        internal object MethodCall(IInvocation invocation,
>>>> object
>>>> > > > > > proxy, MethodInfo method, object[] args)
>>>> > > > > >        {
>>>> > > > > > ....
>>>> > > > > >            return MethodCallWithDefault(state, invocation,
>>>> proxy,
>>>> > > > > > method, args);
>>>> > > > > >        }
>>>> >
>>>> > > > > >        private object MethodCallWithDefault(IMockState state,
>>>> > > > > > IInvocation invocation, object proxy, MethodInfo method,
>>>> object[]
>>>> > > > > > args)
>>>> > > > > >        {
>>>> > > > > >            object returnObject = state.MethodCall(invocation,
>>>> method,
>>>> > > > > > args);
>>>> >
>>>> > > > > >            //if returned object is null and it is a property
>>>> for an
>>>> > > > > > interface, auto mock it
>>>> > > > > >            if (
>>>> > > > > >                returnObject == null &&
>>>> > > > > >                AllowNewObjectForNullInterfaces &&
>>>> > > > > >                method.ReturnType != null &&
>>>> > > > > >                method.ReturnType.IsInterface &&
>>>> > > > > >                method.IsSpecialName &&
>>>> > > > > >                method.Name.StartsWith("get_")
>>>> > > > > >            )
>>>> > > > > >            {
>>>> > > > > >                //create new stub for return object
>>>> > > > > >                returnObject = this.Stub(method.ReturnType);
>>>> >
>>>> > > > > >                //setup up mock result for new instance
>>>> > > > > >                state.LastMethodOptions.Return(returnObject);
>>>> > > > > >            }
>>>> >
>>>> > > > > >            return returnObject;
>>>> > > > > >         }
>>>> >
>>>> > > > > > On Oct 8, 8:39 pm, webpaul <[EMAIL PROTECTED]> wrote:
>>>> > > > > > > Just so we are clear, you expect
>>>> > > > > > > Expect.Call(
>>>> mockService.Identity.Interface1.Interface2.Interface3.Name
>>>> > > > > > ).Ret­urn("foo")
>>>> > > > > > > to work as well, right?
>>>> >
>>>> > > > > > > Also, every time I get source from the rhino trunk I have to
>>>> go in and
>>>> > > > > > > add the missing assemblyinfo.cs files to all the projects to
>>>> get it to
>>>> > > > > > > compile. Any good reason for that?
>>>> >
>>>> > > > > > > On Oct 8, 1:54 am, "Ayende Rahien" <[EMAIL PROTECTED]>
>>>> wrote:
>>>> >
>>>> > > > > > > > No, you don't need to touch dynamic proxy.The behavior can
>>>> be
>>>> > > > > > controlled
>>>> > > > > > > > from RecordMockState. Take a look at RhinoIntercepor, as
>>>> an example of
>>>> > > > > > how
>>>> > > > > > > > we manage things.
>>>> > > > > > > > This is basically making rhino mocks return a mock for an
>>>> interface
>>>> > > > > > method
>>>> > > > > > > > cal.
>>>> >
>>>> > > > > > > > On Wed, Oct 8, 2008 at 6:32 AM, webpaul <
>>>> [EMAIL PROTECTED]> wrote:
>>>> >
>>>> > > > > > > > > Regarding
>>>> >
>>>> > > > > >
>>>> http://ayende.com/Blog/archive/2008/10/08/rhino-mocks-challenge-imple.
>>>> ..
>>>> > > > > > > > > :
>>>> >
>>>> > > > > > > > > Do you expect that Identity is not null in this test and
>>>> should have
>>>> > > > > > > > > an implementation? If so, I'm curious whether you expect
>>>> changes to
>>>> > > > > > > > > Castle.DynamicProxy.ProxyGenerator or not. In the below
>>>> test
>>>> > > > > > > > > mockService.Identity is null and gives an exception as
>>>> such. Do you
>>>> > > > > > > > > expect that and want that fixed or am I missing
>>>> something?
>>>> >
>>>> > > > > > > > >    public interface ISomeInterface
>>>> > > > > > > > >    {
>>>> > > > > > > > >        string Name { get; set; }
>>>> > > > > > > > >    }
>>>> >
>>>> > > > > > > > >    public interface IMyService
>>>> > > > > > > > >    {
>>>> > > > > > > > >        ISomeInterface Identity { get; set;}
>>>> > > > > > > > >    }
>>>> >
>>>> > > > > > > > >    [TestFixture]
>>>> > > > > > > > >        public class FluentMocksTests
>>>> > > > > > > > >        {
>>>> > > > > > > > >                [Test]
>>>> > > > > > > > >                public void
>>>> CanCallSomeRandomInterfaceProperty()
>>>> > > > > > > > >                {
>>>> > > > > > > > >            var mockService =
>>>> > > > > > > > > MockRepository.GenerateMock<IMyService>();
>>>> > > > > > > > >            Expect.Call(mockService.Identity.Name
>>>> ).Return("foo");
>>>> > > > > > > > >            Assert.AreEqual("foo",
>>>> mockService.Identity.Name);
>>>> > > > > > > > >                }
>>>> > > > > > > > >        }- Hide quoted text -
>>>> >
>>>> > > > > > > > - Show quoted text -- Hide quoted text -
>>>> >
>>>> > > > > > > - Show quoted text -- Hide quoted text -
>>>> >
>>>> > > > > - Show quoted text -- Hide quoted text -
>>>> >
>>>> > > > - Show quoted text -- Hide quoted text -
>>>> >
>>>> > > - Show quoted text -- Hide quoted text -
>>>> >
>>>> > - Show quoted text -
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
> --
> Tuna Toksöz
>
> Typos included to enhance the readers attention!
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Rhino Tools Dev" 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/rhino-tools-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to