测试自定义ASP.NET成员资格提供

时间:2012-05-18 11:03:04

标签: nhibernate membership-provider

我正在使用自定义的asp.net成员资格提供程序,并且使用了nhibernate数据访问代码,这很好。现在我需要使用测试来练习这些方法。

是否有兴趣建议如何测试这些方法?提供一些使用一些标准解释测试方法的链接可能吗?

这是我的第一个问题,所以要温柔:)

2 个答案:

答案 0 :(得分:1)

在单元测试任何与数据库或第三方库有关的代码时,您应该解除这些依赖关系,以便测试只测试您的代码。

例如,如果我们的成员资格提供程序中有一个方法用于添加单个用户,那么我们要测试的是我们的这个单一方法的代码是否正常工作,而不是数据库已启动并正在运行或者调用的方法通过这种方法工作。即使数据库脱机或者对其他类的方法调用失败,我们的单元测试仍应通过。

这是Mocking发挥作用的地方。您将要模拟您的数据上下文并设置您将在其上使用的任何方法,以便您可以控制其响应。

仔细查看您的会员提供商所拥有的方法。每个人应该怎么做?这是你真正想要测试的唯一的东西。这种方法作为一个独立的单元,是否能完成我期望的工作。

答案 1 :(得分:0)

会员提供商很难模拟和测试,所以我个人不打扰。但是,我所做的是将所有会员代码放在 易于测试的类中。

我的大多数自定义提供商都是这样的:

public class CustomMembershipProvider : MembershipProvider
    {
        private readonly IUserService _userService;

        public ButlinsMembershipProvider()
        {
            _userService = DI.Resolve<IUserService>();
        }

        public override bool ValidateUser(string username, string password)
        {
            return _userService.Authenticate(username, password);
        }
}

在这个例子中,我会编写集成测试来验证用户服务的行为。我不测试提供商。