【问题标题】:Get session variable value using Moq..C#使用 Moq..C# 获取会话变量值
【发布时间】:2016-07-11 19:07:11
【问题描述】:

.Net 4.6.1 C#

我正在使用 Moq 进行单元测试。我有可以使用 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 创建的会话对象的值?谢谢

【问题讨论】:

    标签: c# session moq


    【解决方案1】:

    设置_mockSession 以返回预期值,而不是_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"]);
    

    【讨论】:

    • 完美!谢谢
    • 很高兴能帮助你实现你所追求的荣耀!
    • 哈哈!我的用户名是一种精神事物;)
    猜你喜欢
    • 1970-01-01
    • 2012-02-02
    • 2017-10-03
    • 2018-01-07
    • 1970-01-01
    • 2014-05-25
    • 2012-01-08
    • 2015-06-02
    • 1970-01-01
    相关资源
    最近更新 更多