Hi Patrick, This is just an small example, I have Interfaces which have 10-12 methods and each method is being tested for different values. I did not put that code here as it will be difficult to understand. I would like to know if there is better way to achive this thing as I have to create a mock object for each and every thing.
Thanks. Vishal On Mon, Sep 19, 2011 at 4:55 PM, VG <[email protected]> wrote: > Hi, > > I am having problem while unit testing an Interface Method for > different values . I want to return different values for a method > while mocking it . Currently I am creating multiple mock objects to > return multiple values. I will paste my controller code,mock methods > and unit tests that I have written to perform the test . > > This is my controller code : > [Transaction] > public ActionResult CopyEvent() > { > int copiedEvent; > try{ > copiedEvent = _symposiaEventQueries.MakeCopyOfEvent(); > > TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()] > = > "The Symposia Event was successfully copied. > Please make any necessary adjustments"; > }catch(Exception ex){ > return Content("Error: "+ex.Message); > } > return Content(copiedEvent.ToString()); > } > > I am creating mock objects for symposiaEventQueries as below : > > public static ISymposiaEventQueries > CreateMockSymposiaEventQueriesWhenMakeCopyOfEventReturnstwo() > { > var mockedRepository = > MockRepository.GenerateMock<ISymposiaEventQueries>(); > mockedRepository.Expect(mr => > mr.MakeCopyOfEvent()).Return(2); > return mockedRepository; > } > > public static ISymposiaEventQueries > CreateMockSymposiaEventQueriesWhenMakeCopyOfEventReturnsOne() > { > var mockedRepository = > MockRepository.GenerateMock<ISymposiaEventQueries>(); > mockedRepository.Expect(mr => > mr.MakeCopyOfEvent()).Return(1); > return mockedRepository; > } > > public static ISymposiaEventQueries > CreateMockSymposiaEventQueriesCopyEventThrowsExpection() > { > var mockedRepository = > MockRepository.GenerateMock<ISymposiaEventQueries>(); > mockedRepository.Expect(mr => > mr.MakeCopyOfEvent()).Throw(new Exception("")); > return mockedRepository; > > I have created three diff methods to return the ISymposiaEventQueries > object. While unit testing I call respective methods to perform the > unit testing. > > The unit Test code is below : > > [Test] > public void > CanCopyEventWhenEventIdExistsReturnsNewEventIdAsContent() { > _symposiaEventQueries = > SharedMockInterfaces.CreateMockSymposiaEventQueries(); > var result = _controller.CopyEvent(); > > var content = (ContentResult) (result); > Assert.AreEqual(content.Content, "2"); > > > _symposiaEventQueries.AssertWasCalled(x=>x.MakeCopyOfEvent(0,0),y=>y.IgnoreArguments()); > > > _controller.TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()].ToString() > .AssertSameStringAs("The Symposia Event was successfully > copied. Please make any necessary adjustments"); > } > > [Test] > public void CanNotCopyEventWhenCopyEventThrowsException() { > _symposiaEventQueries = > > SharedMockInterfaces.CreateMockSymposiaEventQueriesCopyEventThrowsExpection(); > var content = (ContentResult)_controller.CopyEvent(); > content.Content.AssertSameStringAs("Error: "); > } > > Can anybody give me better approach to this , I think i doing it the > wrong way. > > Thanks in advance. > Vishal -- 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.
