Thanks a lot  - it works for me.

On Thu, Jan 28, 2010 at 2:40 PM, slavlenty <[email protected]> wrote:

> I need to clarify something. I got the exception when I run the test
> with debugger.
> You are right, without debugger test succeeds.
> So I added some more complexity to the tested class. Here is the code:
>
>  public interface IInnerIndexer
>    {
>         string this[string index]
>        {
>            get;
>        }
>    }
>     public interface IIndexer
>    {
>        IInnerIndexer this[string index]
>         {
>            get;
>        }
>    }
>    [TestFixture]
>    public class TestApplication
>    {
>        private MockRepository m_Mocks;
>        [SetUp]
>        public void Setup()
>        {
>            m_Mocks = new MockRepository();
>        }
>        [Test]
>        public void CheckIndexer()
>        {
>            IIndexer indexerObj = m_Mocks.StrictMock<IIndexer>();
>             IInnerIndexer innerIndexerObj =
> m_Mocks.StrictMock<IInnerIndexer>();
>
>             using (m_Mocks.Record())
>            {
>                Expect.Call(indexerObj["index1"]).Return
> (innerIndexerObj);
>                Expect.Call(innerIndexerObj["index2"]).Return
> ("indexValue");
>            }
>             using (m_Mocks.Playback())
>            {
>                Console.WriteLine(indexerObj["index1"]);
>            }
>        }
>    }
>
> I get the following exception with the debugger:
>
> Previous method 'IInnerIndexer.get_Item("index2");' requires a return
> value or an exception to throw.
>        at Rhino.Mocks.Impl.RecordMockState.AssertPreviousMethodIsClose()
>        at Rhino.Mocks.Impl.RecordMockState.MethodCall(IInvocation
> invocation, MethodInfo method, Object[] args)
>        at Rhino.Mocks.MockRepository.MethodCall(IInvocation invocation,
> Object proxy, MethodInfo method, Object[] args)
>        at Rhino.Mocks.Impl.RhinoInterceptor.Intercept(IInvocation
> invocation)
>        at Castle.DynamicProxy.AbstractInvocation.Proceed()
>         at
> IInnerIndexerProxybdd79bbf3db24cfcb0ede5cd17fdcda2.get_Item(String
> index)
>
> And I get the following exception without debugger:
>
>  Rhino.Mocks.Exceptions.ExpectationViolationException :
> IInnerIndexer.get_Item("index2"); Expected #1, Actual #0.
>
> So the question is what's wrong with this code?
>
> Thanks for your help
> Slavik
>
>
> On Jan 28, 2:31 pm, Tim Barcz <[email protected]> wrote:
> > The code I pasted works. I actually put in compiler and it passes.
> >
> >
> >
> >
> >
> > On Thu, Jan 28, 2010 at 5:48 AM, Tim Barcz <[email protected]> wrote:
> > > You're missing a return on your expectation.
> >
> > > using (m_Mocks.Record())
> > > {
> > >     Expect.Call(indexerObj["index1"]).*Return("hello")*;
> > > }
> >
> > > using(m_Mocks.Playback())
> > > {
> > >     Console.WriteLine(indexerObj["index1"]);
> >
> > > }
> >
> > > On Thu, Jan 28, 2010 at 4:51 AM, slavlenty <[email protected]>
> wrote:
> >
> > >> I am trying to mock a class with an indexer property
> > >> Here is the example of the code:
> >
> > >>  public interface IIndexer
> > >>    {
> > >>        string this[string index]
> > >>        {
> > >>            get;
> > >>        }
> > >>    }
> > >>    [TestFixture]
> > >>    public class TestApplication
> > >>    {
> > >>        private MockRepository m_Mocks;
> > >>        [SetUp]
> > >>        public void Setup()
> > >>        {
> > >>            m_Mocks = new MockRepository();
> > >>        }
> > >>        [Test]
> > >>        public void CheckIndexer()
> > >>        {
> > >>            IIndexer indexerObj = m_Mocks.StrictMock<IIndexer>();
> >
> > >>            using (m_Mocks.Record())
> > >>            {
> > >>                Expect.Call(indexerObj["index1"]);
> > >>            }
> > >>        }
> > >>    }
> > >> There is an exception when I'm calling to  Expect.Call(indexerObj
> > >> ["index1"]);
> > >> The exception is the following:
> >
> > >> TestCase 'GSM.DataAccess.MDALAccess.Test.TestApplication.CheckIndexer'
> > >> failed: System.InvalidOperationException : Previous method
> > >> 'IIndexer.get_Item("index1");' requires a return value or an exception
> > >> to throw.
> > >>        at
> Rhino.Mocks.Impl.RecordMockState.AssertPreviousMethodIsClose()
> > >>        at Rhino.Mocks.Impl.RecordMockState.MethodCall(IInvocation
> > >> invocation, MethodInfo method, Object[] args)
> > >>        at Rhino.Mocks.MockRepository.MethodCall(IInvocation
> invocation,
> > >> Object proxy, MethodInfo method, Object[] args)
> > >>        at Rhino.Mocks.Impl.RhinoInterceptor.Intercept(IInvocation
> > >> invocation)
> > >>        at Castle.DynamicProxy.AbstractInvocation.Proceed()
> > >>        at
> IIndexerProxyc2c7135b1bea490d8bc099fa605d11c4.get_Item(String
> > >> index)
> >
> > >> How I can mock the call IIndexer.get_Item("index1")?
> >
> > >> Thanks
> > >> Slavik
> >
> > >> --
> > >> 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]<rhinomocks%[email protected]>
> <rhinomocks%2bunsubscr...@googlegrou ps.com>
> > >> .
> > >> For more options, visit this group at
> > >>http://groups.google.com/group/rhinomocks?hl=en.
> >
> > > --
> > > Tim Barcz
> > > Microsoft C# MVP
> > > Microsoft ASPInsider
> > >http://timbarcz.devlicio.us
> > >http://www.twitter.com/timbarcz
> >
> > --
> > Tim Barcz
> > Microsoft C# MVP
> > Microsoft ASPInsiderhttp://timbarcz.devlicio.ushttp://
> 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]<rhinomocks%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/rhinomocks?hl=en.
>
>

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