gpt4 book ai didi

asp.net - 需要用户登录的 UnitTest ASP.NET 应用程序

转载 作者:行者123 更新时间:2023-12-02 14:26:28 25 4
gpt4 key购买 nike

我有一个允许用户登录的 ASP.NET 应用程序。我的应用程序的另一部分使用 UserId(用户必须登录才能访问 Controller )。如何伪造登录以进行单元测试?

这是我获取 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

谢谢

编辑

这是一个 MVC 3 项目。

最佳答案

您可以为您的成员资格编写一个包装类,以便您可以创建一个模拟以在单元测试中使用。代码是用 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();
}
}

如果你没有在模拟中做复杂的事情,我可能会使用 moq所以你在单元测试中根本不需要模拟类。

var mock = new Mock<IMyMemberShip>();
mock.Setup(m => m.GetUserId()).Returns(Guid.NewGuid());

关于asp.net - 需要用户登录的 UnitTest ASP.NET 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com