Exactly! I want!!! However, i was struggling to find an appropriate Contraint to meet this. I am now looking at the AAA syntax and attempting to follow the test one thing per test strategy, but it's difficult when you pick up bad habits!!!
On Nov 18, 12:39 pm, Patrick Steele <[email protected]> wrote: > Let me see if I understand exactly what you want (ironically, I > learned RhinoMocks with the AAA syntax and I find it hard sometimes to > follow the record/play syntax). The SearchManager class you're > testing has the following members: > > ISearchDAO SearchDAO { get; set; } > IServiceAreaDAO ServiceAreaDAO { get; set; } > ArticleSearchResult SearchForArticles(ArticleSearchCriteria criteria, > int[] serviceAreaIds) > > You want to ensure that the when calling SearchForArticles, the > results of any calls made to ServiceAreaDAO.GetById(int) are added to > the criteria.ServiceAreas collection? > > -- > Patrick Steelehttp://weblogs.asp.net/psteele > > On Mon, Nov 16, 2009 at 9:52 AM, 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!!! -- 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]. For more options, visit this group at http://groups.google.com/group/rhinomocks?hl=.
