Я пытаюсь смоделировать HttpRequestBase
и HttpSessionStateBase
объекты и протестировать мой код с помощью Moq Framework.
Это важная часть моей настройки.
_httpSessionStateBase = _mockRepository.Create<HttpSessionStateBase>();
_motorWebSession = new MotorWebSession
{
PersonaIdentifier = Guid.NewGuid(),
NameIdentifier = Guid.NewGuid(),
MiCurrentPageId = Guid.NewGuid(),
MiSessionId = Guid.NewGuid(),
};
_httpSessionStateBase.SetupGet(e => e.Count).Returns(1);
var keysCollection = new NameValueCollection { { "MotorSession", "MotorSession" } };
_httpSessionStateBase.SetupGet(e => e.Keys).Returns(keysCollection.Keys);
_httpSessionStateBase.Object[0] = _motorWebSession;
_httpSessionStateBase.Object["MotorSession"] = _motorWebSession;
_httpContextBase = _mockRepository.Create<HttpContextBase>();
_httpContextBase.SetupGet(h => h.Session).Returns(_httpSessionStateBase.Object);
ВВ текущей реализации этот код вызывается в тесте.
var webSession = _httpContext.Current.Session;
var sessionObject = webSession.Keys.Cast<string>()
.Where(w => webSession[w] is WebSessionBase)
.Select(s => webSession[s])
.ToList().FirstOrDefault();
Во время предложения Where sessionObject
приводит к null
, что препятствует правильной работе любого другого последующего кода.Что-то не так с установкой?Или код может быть изменен, чтобы работать для этой установки?Он работал с Rhino.Mocks, но я пытаюсь изменить его на Moq.