gpt4 book ai didi

c# - 使用最小起订量和 session 状态包装器进行测试

转载 作者:行者123 更新时间:2023-11-28 21:14:24 25 4
gpt4 key购买 nike

我正在使用如下所示的 session 包装器。我遇到的问题是在运行测试时,try 不起作用,它会进入 catch,因此永远不会设置 session 变量。我正在使用 Moq 为我的模拟上下文创建一个模拟 session 状态。如果我创建一个像这样的变量:

Session["variable"] = "something";

这很好用并且一直持续到测试结束。在我的包装器中创建的所有内容都没有。由于 Session 以某种方式持续存在,我的理论是我需要弄清楚它在哪里,然后把它放在我的捕获物中。我不知道该怎么做。 公开课MySession { //私有(private)构造函数 私有(private)我的 session () { id = new Random().Next(100000);

    // Gets the current session.
public static MySession Current
{
get
{
MySession session = new MySession();
try
{
session =
(MySession)HttpContext.Current.Session["__MySession__"];
}
catch
{
//Catch nothing
}
if (session == null)
{
session = new MySession();
HttpContext.Current.Session["__MySession__"] = session;
}
return session;
}
}

// **** add your session properties here, e.g like this:
public int id { get; set; }

最佳答案

我觉得您创建 session 包装器的方式有误。 session 包装器通常意味着您创建一个类,该类在生产代码中将所有调用传递给真实 session 。在单元测试中,它内部没有真正的 session ,可能是一个模拟对象。您的 MySession 类始终需要一个真正的 session ,因此使用的任何测试都不是真正的单元测试。

您可能不需要自己动手,System.Web.Abstractions 中有一个 HttpSessionStateWrapper,您可以试试。

关于c# - 使用最小起订量和 session 状态包装器进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7602696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com