Where are people new to Rhino learning about record/replay? I'd like to find/fix.
Tim On 11/17/09, Alex McMahon <[email protected]> wrote: > My response: > > 1. I don't see what's wrong with testing it the way you are at the > moment. > 2. If you really don't like it then I'd take a look at > http://www.ayende.com/wiki/Rhino+Mocks+3.5.ashx#ArgumentConstraints > 3. Also is there any reason you are using StrictMocks? it's almost always > a 'bad idea' > 4. Any reason why you're using the old record/replay syntax? I'd always > recommend using the AAA syntax (Arrange Act Assert) > > > 2009/11/17 Goatified Creature <[email protected]> > >> >> Hi Guys, >> >> Sorry to bump, I just wondered whether I had commited a terrible sin, >> or maybe my question is a little dumb!! >> >> Cheers! >> >> On Nov 16, 2:52 pm, Goatified Creature <[email protected]> >> wrote: >> > Hi, I have been trying to write a unit test in C# for a Manager >> > method. I am mocking two DAOS. However, the parameter passed to the >> > manager method will be further populated by the manager and passed as >> > an argument to one DAO. I wish to place a constraint on the DAO call >> > to ensure this property was populated correctly. Maybe this is easier >> > to demonstrate through code.... >> > >> > // the manager to test >> > SearchManager managerToTest = new SearchManager(); >> > >> > // mock the two DAOs >> > MockRepository mocks = new MockRepository(); >> > ISearchDAO mockedSearchDAO = mocks.StrictMock<ISearchDAO> >> > (); >> > IServiceAreaDAO mockedServiceAreaDAO = >> > mocks.StrictMock<IServiceAreaDAO>(); >> > >> > // create a search criteria object that does not have it's >> > ServiceAreas collection populated >> > ArticleSearchCriteria criteria = new ArticleSearchCriteria >> > (); >> > >> > // now the manager method will populate the ServiceAreas >> > property of criteria with a collection of >> > // matching ServiceArea objects matching the below int >> > array >> > int[] serviceAreaIds = { 345435 }; >> > ServiceArea serviceArea = new ServiceArea(); >> > >> > // and these will be the pretend results >> > ArticleSearchResult resultFromDAO = new ArticleSearchResult >> > (); >> > >> > using (mocks.Record()) >> > { >> > Expect.Call(mockedServiceAreaDAO.GetById >> > (345435)).Return(serviceArea); >> > >> > // Now, here, I want a contraint to say >> > // ensure criteria.ServiceAreas contains the above >> > serviceArea object. This will be >> > // set before calling the below DAO method. >> > Expect.Call(mockedSearchDAO.SearchForArticles >> > (criteria)).Return(resultFromDAO); >> > >> > } >> > using (mocks.Playback()) >> > { >> > // inject DAO dependencies >> > managerToTest.SearchDAO = mockedSearchDAO; >> > managerToTest.ServiceAreaDAO = mockedServiceAreaDAO; >> > >> > // call the method ensuring correct results. This >> > works fine >> > Assert.That(managerToTest.SearchForArticles(criteria, >> > serviceAreaIds), Is.SameAs(resultFromDAO)); >> > >> > // Now, I shouldn't be validating the ServiceAreas >> > collection was populated through the assert methodology >> > Assert.That(criteria.ServiceAreas, Has.Member >> > (serviceArea)); >> > } >> > >> > I have been tearing my receding hair out all afternoon through the >> > Rhino Mocks documentation to understand how to test this scenario. >> > >> > Cheers!!! >> > >> > > > > -- Sent from my mobile device Tim Barcz Microsoft C# MVP Microsoft 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 -~----------~----~----~----~------~----~------~--~---
