我正在拆分并重新组建一个大型网站,并希望借此机会在网站重新创建时进行一些测试驱动的开发。我遇到的问题是如何。我需要测试的很多项目都处理用户登录时设置的会话变量(或其他变量)。但是如果我正在测试单个页面,我就不会登录。
例如:
[TestMethod()]
[HostType("ASP.NET")]
[UrlToTest("http://localhost:64769/UsersDetail.aspx")]
public void GetCompanyId_Test()
{
var testID = GetCompanyID();
Assert.AreEqual("123456789", testID);
}
现在,问题是为了使GetCompanyID工作,它必须具有在登录时设置的变量。
这可能吗?我是否必须以某种方式模拟数据?
由于
答案 0 :(得分:1)
您可能必须更改GetCompanyID函数以使用生命系统中的会话填充的一些变量,以及单元测试系统中的testsetup。唉,你不能在ASP.NET中模拟HttpSessionState - 见这里:How do I mock/fake the session object in ASP.Net Web forms?
另一个想法是在testsetup中实际执行loginaction。