예제 #1
0
        public void WhenOneSharedContextExists_ShouldControlDataMapperLifetime()
        {
            var            db      = MockRepository.GenerateStub <IDataMapper>();
            ITestDbFactory factory = MockRepository.GenerateMock <ITestDbFactory>();

            factory.Expect(f => f.Create()).Return(db).Repeat.Any();
            UnitOfWork uow = new UnitOfWork(() => factory.Create());

            using (uow.SharedContext)
            {
                uow.DB.ExecuteNonQuery("query1");

                using (uow)
                {
                    uow.DB.ExecuteNonQuery("query2");
                }

                using (uow)
                {
                    uow.DB.ExecuteNonQuery("query3");
                }

                uow.DB.ExecuteNonQuery("query4");
            }

            factory.AssertWasCalled(f => f.Create(), o => o.Repeat.Once());
            db.AssertWasCalled(d => d.ExecuteNonQuery(""), o => o.IgnoreArguments().Repeat.Times(4));
            db.AssertWasCalled(d => d.Dispose(), o => o.Repeat.Once());
        }
예제 #2
0
        public void One_UnitOfWork_ShouldCreateAndDisposeDataMapper_Once()
        {
            var            db      = MockRepository.GenerateStub <IDataMapper>();
            ITestDbFactory factory = MockRepository.GenerateMock <ITestDbFactory>();

            factory.Expect(f => f.Create()).Return(db).Repeat.Any();
            UnitOfWork uow = new UnitOfWork(() => factory.Create());

            using (uow)
            {
                db = uow.DB;
            }

            factory.AssertWasCalled(f => f.Create(), o => o.Repeat.Once());
            db.AssertWasCalled(d => d.Dispose(), o => o.Repeat.Once());
        }
예제 #3
0
        public void UnitOfWork_ShouldOnlyCreateAndDisposeOneDataMapper()
        {
            var            db      = MockRepository.GenerateStub <IDataMapper>();
            ITestDbFactory factory = MockRepository.GenerateMock <ITestDbFactory>();

            factory.Expect(f => f.Create()).Return(db).Repeat.Any();
            UnitOfWork uow = new UnitOfWork(() => factory.Create());

            using (uow)
            {
                uow.DB.ExecuteNonQuery("query1");
                uow.DB.ExecuteNonQuery("query2");
            }

            factory.AssertWasCalled(f => f.Create(), o => o.Repeat.Once());
            db.AssertWasCalled(d => d.Dispose(), o => o.Repeat.Once());
        }