An ASP.NET session-state store-provider implementation (http://msdn.microsoft.com/en-us/library/ms178588.aspx) using RavenDb (http://ravendb.net) for persistence.
Наследование: System.Web.SessionState.SessionStateStoreProviderBase, IDisposable
        protected RavenSessionStateTest()
        {
            MockDocumentSession = new Mock<IDocumentSession>();
            MockDocumentStore = new Mock<IDocumentStore>();
            MockSyncAdvancedSessionOperation = new Mock<ISyncAdvancedSessionOperation>();

            MockDocumentSession.SetupGet(cmd => cmd.Advanced).Returns(MockSyncAdvancedSessionOperation.Object);
            MockDocumentStore.Setup(cmd => cmd.OpenSession()).Returns(MockDocumentSession.Object);

            Subject = new RavenSessionStateStoreProvider{ApplicationName = ApplicationName, SessionStateConfig = new SessionStateSection
                {
                    Timeout = Timeout
                }};
            Subject.Initialize("", new NameValueCollection(), MockDocumentStore.Object);
            if (PreExistingSessionStateDocument != null)
            {
                PersistedSessionStateDocument = PreExistingSessionStateDocument.ShallowCopy();
            }
            MockDocumentSession.Setup(cmd => cmd.Load<SessionStateDocument>(It.IsAny<string>()))
                    .Returns(PersistedSessionStateDocument);
            RavenJObject ravenJObject = new RavenJObject();
            ravenJObject.Add("Raven-Expiration-Date", null);
            MockSyncAdvancedSessionOperation.Setup(cmd => cmd.GetMetadataFor(It.IsAny<SessionStateDocument>()))
                .Returns(ravenJObject);
        }
        public static RavenSessionStateStoreProvider SetupStoreProvider(string expectedAppPath, Mock<IHostingProvider> mockHostingProvider)
        {
            RavenSessionStateStoreProvider subject = new RavenSessionStateStoreProvider
            {
                SessionStateConfig = new SessionStateSection
                {
                    Timeout = TimeSpan.FromMinutes(20)
                }
            };

            mockHostingProvider.SetupGet(cmd => cmd.ApplicationVirtualPath).Returns(expectedAppPath);
            subject.HostingProvider = mockHostingProvider.Object;
            return subject;
        }