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 に答える