public void Dispose_also_disposes_of_session() { var session = new Mock<ISession>(); var context = new Mock<CurrentSessionContext>(); var sessionFactory = new Mock<ISessionFactoryImplementor>(); sessionFactory.Setup(factory => factory.OpenSession()).Returns(session.Object); session.Setup(session2 => session2.SessionFactory).Returns(sessionFactory.Object); sessionFactory.Setup(implementor => implementor.CurrentSessionContext).Returns(context.Object); var work = new HibernateUnitOfWork(sessionFactory.Object); work.Dispose(); session.Verify(session1 => session1.Dispose()); }