使用 Moq..C# 获取会话变量值

Get session variable value using Moq..C#

.Net 4.6.1 C#

我正在使用最小起订量进行单元测试。我有可以使用 Moq 成功设置的会话变量:

Mock<HttpSessionStateBase> _mockSession = new Mock<HttpSessionStateBase>();
       Mock<HttpContextBase> _mockHttpContext = new Mock<HttpContextBase>();
   _mockHttpContext.SetupGet(ctx => ctx.Session).Returns(_mockSession.Object);
        _mockHttpContext.SetupGet(p => p.Session["windowsUsername"]).Returns("Joe Cool");

如果我检查活动会话,那里有键 "windowsUsername",其值为 "Joe Cool"。现在我想获取刚刚使用 Moq 创建的会话密钥的值。这不起作用:

 var name = _mockHttpContext.SetupGet(p => p.Session["windowsUsername"]);

如何获取使用 Moq 创建的会话对象的值?谢谢

_mockSession 设置为 return 预期值,而不是 _mockHttpContext

Mock<HttpSessionStateBase> _mockSession = new Mock<HttpSessionStateBase>();
Mock<HttpContextBase> _mockHttpContext = new Mock<HttpContextBase>();

_mockSession.Setup(x => x["windowsUserName"]).Returns("Joe Cool");

_mockHttpContext.SetupGet(ctx => ctx.Session).Returns(_mockSession.Object);
Assert.AreEqual("Joe Cool", _mockHttpContext.Object.Session["windowsUserName"]);