Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VS2012对ASP.NET进行Microsoft单元测试_Asp.net_Unit Testing_Visual Studio 2012 - Fatal编程技术网

使用VS2012对ASP.NET进行Microsoft单元测试

使用VS2012对ASP.NET进行Microsoft单元测试,asp.net,unit-testing,visual-studio-2012,Asp.net,Unit Testing,Visual Studio 2012,我正在拆分并重新组装一个大型网站,希望借此机会在重新创建网站时进行一些测试驱动的开发。我遇到的问题是如何。我需要测试的许多项目都涉及用户登录时设置的会话变量(或其他变量)。但是如果我正在测试一个单独的页面,我永远不会登录 例如: [TestMethod()] [HostType("ASP.NET")] [UrlToTest("http://localhost:64769/UsersDetail.aspx")] public void GetCompanyId_Test() { var t

我正在拆分并重新组装一个大型网站,希望借此机会在重新创建网站时进行一些测试驱动的开发。我遇到的问题是如何。我需要测试的许多项目都涉及用户登录时设置的会话变量(或其他变量)。但是如果我正在测试一个单独的页面,我永远不会登录

例如:

[TestMethod()]
[HostType("ASP.NET")]
[UrlToTest("http://localhost:64769/UsersDetail.aspx")]
public void GetCompanyId_Test()
{
    var testID = GetCompanyID();

    Assert.AreEqual("123456789", testID);

}
现在,问题是为了让GetCompanyID工作,它必须有在登录时设置的可用变量

这可能吗?我必须以某种方式模拟数据吗


谢谢

您可能需要更改GetCompanyID函数以使用livesystem中的会话和单元测试系统中的测试设置填充的一些变量。唉,您不能在ASP.NET中模拟HttpSessionState-请参见此处:


另一个想法是在测试设置中实际执行登录操作。

我认为这种情况下的选项最好通过模拟来解决。如果您正在重新创建站点,为什么要使用会话?就我个人而言,如果我正在重写一个遗留网站,我要做的第一件事就是从它中去掉任何状态(这正是会话引入的),并使它更加RESTful。重写某些代码并犯与此代码最初相同的错误有什么意义?@DarinDimitrov有些东西几乎必须存储在会话中。@AetherMcLoud,什么样的东西?数据库或分布式缓存(如果您关心性能的话)在处理这些场景时会更好。此外,它使您的应用程序完全无状态。您知道无状态应用程序的好处吗?这就是所谓的可伸缩性。@DarinDimitrov AFAIK缓存数据可以被任何人访问,而不仅仅是创建它的人,所以在会话中明智的用户数据会更好?我不太精通缓存,谢谢。我也这么怀疑,但想知道还有别的办法吗