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

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