我正在使用如下所述的会话封装。我遇到的问题是,在运行测试时,try不起作用,并进入catch,因此会话变量永远不会被设置。我使用Moq为我的模拟上下文创建一个模拟会话状态。如果我创建一个变量,如:使用最小起订量和会话状态封装进行测试
Session["variable"] = "something";
工作正常并且一直持续到测试结束。在我的包装中创建的所有东西都没有。由于会议在某种程度上持续下去,我的理论是,我需要弄清楚它在哪里,然后把它放在我的发现中。但我不知道该怎么做。 public class MySession // private private constructor private MySession() { 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; }
这让我更接近我的目标,因为我没有成功地模拟会话变量,但我想这不是我想要的。我将它标记为答案,因为它使我朝着正确的方向发展,并且我不知道我在问什么。 – jchysk