背景
我正在测试ASP.NET 4.0中的一个函数(Web Forms而不是MVC),我正在使用Visual Studio 2010中内置的单元测试。我已经创建了一个单独的测试项目并为每个类创建一个测试类在Web项目中。
问题:
我遇到了一个问题,其中一个函数使用HttpContext.Current.User.Identity.Name作为逻辑的一部分。如何在Unit测试项目类或方法中设置该值以便我可以测试该函数?
更新
我希望的是我可以在我的测试方法之上设置其他属性。目前我有:
[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("C:\\DEV\\ProjectName\\ClientWeb", "/")]
[UrlToTest("http://localhost:9018/")]
public void GetLoginTest()
{
// test code
}
答案 0 :(得分:3)
你问错了问题。 HttpContext.Current.User.Identity是一个依赖项,您应该在单元测试代码之前进行封装。如果封装(可能在接口后面),您可以用测试数据/对象替换抽象。
答案 1 :(得分:1)
您可以通过实施Principal
创建自己的IPrincipal
,其中您需要使用Identity
界面定义自定义IIdentity
,您可以在其中返回Name
属性的值。
然后,您可以将HttpContext.Current.User
设置为自定义的Principal对象。