gpt4 book ai didi

c# - 模拟 MembershipUser

转载 作者:太空狗 更新时间:2023-10-29 17:42:36 25 4
gpt4 key购买 nike

我目前正在开发一个 asp.net mvc 2 应用程序,它使用默认的 SqlMembershipProvider 进行身份验证。我已经实现了一个 Controller 方法,它通过调用 Membership.GetUser().ProviderUserKey 读取当前用户的 ProviderUserKey。现在我正在尝试为这个 Controller 编写一些测试方法。

为了摆脱对静态成员资格类的依赖,我创建了一个瘦包装器并使我的控​​制器依赖于相应的接口(interface):

public interface IStaticMembershipService {
MembershipUser GetUser();

void UpdateUser(MembershipUser user);
}

到目前为止一切正常,但为了对 Controller 进行单元测试,我仍然需要模拟此接口(interface)的 GetUser() 方法并返回包含 ProviderUserKey 属性的 MembershipUser 对象。模拟此类对象的最简单方法是什么?

我使用最小起订量作为模拟框架。

最佳答案

它看起来像这样:

var membershipMock = new Mock<IStaticMembershipService>();
var userMock = new Mock<MembershipUser>();
userMock.Setup(u => u.ProviderUserKey).Returns(guid);
membershipMock.Setup(s => s.GetUser()).Returns(userMock.Object);

如果 MembershipUser 类不适合模拟(即,如果 ProviderUserKey 不是虚拟的),您需要创建自己的对象来表示您需要从 MembershipUser 对象获得的值,并且您的服务会返回其中一个。

MembershipUser 也有可能是一个类似 poco 的对象,您可以像这样创建一个实例:

var userMock = new MembershipUser {ProviderUserKey = guid};

关于c# - 模拟 MembershipUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4257793/

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