Tyl*_*itt 5 asp.net authentication unit-testing
我有一个允许用户登录的ASP.NET应用程序.我的应用程序的另一部分使用UserId(用户必须登录才能访问控制器).如何伪造单元测试登录?
以下是我获取UserId的方法
Private _UserId As Guid
Public ReadOnly Property UserId() As Guid
Get
_UserId = System.Web.Security.Membership.GetUser().ProviderUserKey
Return _UserId
End Get
End Property
Run Code Online (Sandbox Code Playgroud)
谢谢
编辑
这是一个MVC 3项目.
您可以为您的成员编写一个包装类,这样您就可以创建一个Mock以用于您的单元测试.代码在C#中,我道歉但你会明白我的观点.
public interface IMyMemberShip
{
Guid GetUserId();
}
public class MyMemberShip : IMyMemberShip
{
public Guid GetUserId()
{
return (Guid)System.Web.Security.Membership.GetUser().ProviderUserKey;
}
}
public class MockMyMembership : IMyMemberShip
{
public Guid GetUserId()
{
return Guid.NewGuid();
}
}
public class AnotherPartOfYourApplication
{
IMyMemberShip _myMembership;
public AnotherPartOfYourApplication(IMyMemberShip myMemberShip)
{
_myMembership = myMemberShip;
}
public void GetUserIdAndDoSomething()
{
var userId = _myMembership.GetUserId();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你没有在你的模拟中做复杂的事情,我可能会使用moq,所以你在单元测试中根本不需要模拟类.
var mock = new Mock<IMyMemberShip>();
mock.Setup(m => m.GetUserId()).Returns(Guid.NewGuid());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |