0

我有一个 ASP.NET 应用程序框架 4,我正在尝试测试一个方法,在该方法中它在某些时候调用:

var userKey = (Guid)Membership.GetUser().ProviderUserKey;

当然,因为没有人连接我收到错误“对象引用未设置为对象的实例”。这是正常的...

有没有人有办法解决这个问题?我应该尝试嘲笑会员资格(但被密封这很敏感)还是应该尝试更换服务?

感谢您的帮助!

编辑:这不是 MVC 应用程序

4

1 回答 1

2

我想我找到了答案,我最终使用了这样的东西:

        Mock<IStaticMembershipService> membershipMock = new Mock<IStaticMembershipService>();
        Mock<MembershipUser> userMock = new Mock<MembershipUser>();

        userMock.Setup(u => u.ProviderUserKey).Returns(guid);
        membershipMock.Setup(s => s.GetUser()).Returns(userMock.Object);

班上:

public interface IStaticMembershipService
{
    MembershipUser GetUser();

    void UpdateUser(MembershipUser user);
}

public class StaticMembershipService : IStaticMembershipService
{
    public System.Web.Security.MembershipUser GetUser()
    {
        return Membership.GetUser();
    }

    public void UpdateUser(MembershipUser user)
    {
        Membership.UpdateUser(user);
    }
}
于 2013-01-28T08:26:11.383 回答