This is what I ended up with:

        [TestMethod]
        public void
BusinessBaseFactory_Fetch_WithCriteria_ReturnsObject()
        {
            BusinessListBaseServerFactory<ProductList, Product>
_factory = new BusinessListBaseServerFactory<ProductList,
Product>(_repository);
            _criteria = _mocks.DynamicMock<NHibernate.ICriteria>();

            ProductList list = new ProductList();
            list.Add(new Product() { Name = "Test" });
            list.Add(new Product() { Name = "Test1" });
            list.Add(new Product() { Name = "Test2" });

            NHibernate.Criterion.SimpleExpression expression =
Restrictions.Eq("Name", "Test");
 
SetupResult.For(_criteria.Add(expression)).Return(_criteria);

            ProductList _returnValues = new ProductList();
            ProductList products = _factory.Create();
            using (_mocks.Record())
            {
 
Expect.Call(_repository.CreateCriteria()).Return(_criteria);//.Do(getCriteria());
                Expect.Call(_criteria.List <Product>()).Return(list);
            }
            using (_mocks.Playback())
            {
                products = _factory.Fetch(new
SingleCriteria<ProductList, string>("Test"));
            }
        }

It is a passing test, but is it right? I am confident that it verifies
the method is in fact doing what it should.

On Oct 20, 4:31 pm, naraga <[EMAIL PROTECTED]> wrote:
> hi Ryan,
> i think you have basically two options:
> - use anonymous method instead of getCriteria()  - you can reference
> local _criteria there
> - create DynamicMock in getCriteria()
> btw. did you notice you are overwriting _criteria in getCriteria() ?
>
> ~naraga
>
> On Oct 20, 6:56 pm, RyanKelley <[EMAIL PROTECTED]> wrote:
>
>
>
> > Pardon me, I am fairly new to RhinoMocks and mocking in general and I
> > need some help. I have a factory that creates an instance of a list
> > object with this method:
>
> > public override L Fetch(CriteriaBase criteria)
> >         {
> >             if (criteria != null)
> >             {
> >                 var list = (L) Activator.CreateInstance(typeof (L),
> > true);
> >                 IList<I> _list;
>
> >                 using(UnitOfWork.Start(DatabaseKey))
> >                 {
> >                     NHibernate.ICriteria crit =
> > _repository.CreateCriteria();
>
> >                     list.SetNHibernateCriteria(criteria, crit);
> >                     _list = crit.List<I>();
> >                 }
>
> >                 list.RaiseListChangedEvents = false;
>
> >                 foreach (var item in _list)
> >                 {
> >                     list.Add(item);
> >                 }
>
> >                 list.RaiseListChangedEvents = true;
> >                 MarkOld(list);
> >                 return list;
>
> >             }
> >             return Fetch();
> >         }
>
> > I have a test setup like this:
>
> > [TestMethod]
> >         public void
> > BusinessBaseFactory_Fetch_WithCriteria_ReturnsObject()
> >         {
> >             BusinessListBaseServerFactory<ProductList, Product>
> > _factory = new BusinessListBaseServerFactory<ProductList,
> > Product>(_repository);
> >             _criteria = _mocks.DynamicMock<NHibernate.ICriteria>();
>
> >             ProductList _returnValues = new ProductList();
> >             ProductList products = _factory.Create();
> >             using (_mocks.Record())
> >             {
> >                 Expect.Call(_repository.CreateCriteria()).Do(new
> > CriteriaAction(getCriteria));
> >             }
> >             using (_mocks.Playback())
> >             {
> >                 products = _factory.Fetch(new
> > SingleCriteria<ProductList, string>("Test"));
> >             }
> >         }
>
> >         private delegate NHibernate.ICriteria CriteriaAction();
>
> >         private NHibernate.ICriteria getCriteria()
> >         {
> >             _criteria =
> > UnitOfWork.CurrentSession("PTracker").CreateCriteria(typeof
> > (Product));
> >             return _criteria;
> >         }
>
> > This test is successful but it doesn't really test that
> > ICriteria.List() was called. I am having trouble wrapping my head
> > around how to test that since the ICriteria variable in the test is a
> > local instance. Got any ideas?- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
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