C# pageIndex=1将不计算MembershipUserCollection中的用户名

C# pageIndex=1将不计算MembershipUserCollection中的用户名,c#,collections,count,asp.net-membership,C#,Collections,Count,Asp.net Membership,一天的大部分时间里,我都在为这个考试而挣扎。我在另一篇文章中用同样的代码解决了其他问题。我的问题是int pageIndex=1 如果pageIndex设置为“0”,测试将失败,但它将计算MembershipUserCollection中的用户名。如果将If pageIndex设置为任何其他数字,则测试将通过,但不允许对集合中的用户名进行计数 解决此问题的最简单方法是什么,以便我的测试计算它在MembershipUserCollection中找到的用户名数?(测试应该找到两个用户名,johnUs

一天的大部分时间里,我都在为这个考试而挣扎。我在另一篇文章中用同样的代码解决了其他问题。我的问题是int pageIndex=1

如果pageIndex设置为“0”,测试将失败,但它将计算MembershipUserCollection中的用户名。如果将If pageIndex设置为任何其他数字,则测试将通过,但不允许对集合中的用户名进行计数

解决此问题的最简单方法是什么,以便我的测试计算它在MembershipUserCollection中找到的用户名数?(测试应该找到两个用户名,johnUser1和johnUser2)

[TestMethod]
public void TestFindUserByName()
{
尝试
{
//设置测试以创建用户
MembershipProvider prov=this.GetMembershipProvider();
成员资格和状态;
//创建用户
MembershipUser user1=prov.CreateUser(“johnUser1”、“12345”、“12345”)johnUser1@asc.edu“,”,”,true,null,out状态);
MembershipUser user2=prov.CreateUser(“johnUser2”、“12345”和johnUser2@asc.edu“,”,”,true,null,out状态);
//获取用户
user1=prov.GetUser(“johnUser1”,false);//不检查用户是否联机。参数应为false。尚未实现
user2=prov.GetUser(“johnUser2”,false);
int pageSize=1;
int pageIndex=1;
int totalRecords=5;
MembershipUserCollection coll=prov.FindUsersByName(“john”,pageIndex,pageSize,out totalRecords);
列表用户名=新列表();
foreach(coll中的MembershipUser用户)
{
UserName.Add(user.UserName);
}
Assert.AreEqual(2,coll.Count);
Assert.IsNotNull(用户名);
Assert.IsTrue(UserName.Contains(“johnUser1”);
//删除用户
prov.DeleteUser(“johnUser1”,真实);
prov.DeleteUser(“johnUser2”,真实);
//尝试再次获取用户
user1=prov.GetUser(“johnUser1”,false);
user2=prov.GetUser(“johnUser2”,false);
//测试是否没有返回任何用户
arenequal(null,user1);
arenequal(null,user2);
}
捕获(例外情况除外)
{
日志信息(ex);
断言失败(例如消息);
}
}

当pageIndex为0时,哪个断言失败?是不是
Assert.IsTrue(UserName.Contains(“john”))?由于用户名是johnUser1和johnUser2,该代码将失败,因为列表中的contains与字符串中的contains不同。Assert.AreEqual(2,coll.Count)失败,因为MembershipUserCollection不计算用户名。我更正了“johnUser1”,我意识到了这一点,只是忘记了在将代码移到此处之前对其进行更改。从:“FindUserByName返回一个成员资格用户列表,其中用户名与为配置的ApplicationName属性提供的用户名匹配。如果数据源支持其他搜索功能(如通配符),则可以为用户名提供更广泛的搜索功能。“从这一点来看,您似乎无法使用此函数匹配部分用户名。如果您正在查找计数,可能
GetAllUsers
会更好。如果您使用的是live membership provider,我会在添加两个用户之前调用它一次,然后再次调用,并断言它增加了2。关于如何使用其他函数实现匹配部分用户名,有什么建议吗
    [TestMethod]
    public void TestFindUsersByName()
    {
        try
        {

            //set test to create user 
            MembershipProvider prov = this.GetMembershipProvider();
            MembershipCreateStatus status;
            //creates users
            MembershipUser user1 = prov.CreateUser("johnUser1", "12345", "johnUser1@asc.edu", "", "", true, null, out status);
            MembershipUser user2 = prov.CreateUser("johnUser2", "12345", "johnUser2@asc.edu", "", "", true, null, out status);

            //gets users
            user1 = prov.GetUser("johnUser1", false); //not checking if user is online. Argument should be false. Not yet implemented 
            user2 = prov.GetUser("johnUser2", false);

            int pageSize = 1;
            int pageIndex=1;
            int totalRecords = 5;

            MembershipUserCollection coll = prov.FindUsersByName("john",pageIndex, pageSize, out totalRecords);


            List<string> UserName = new List<string>();

            foreach (MembershipUser user in coll)
            {

                UserName.Add(user.UserName);
            }
            Assert.AreEqual(2, coll.Count);
            Assert.IsNotNull(UserName);


            Assert.IsTrue(UserName.Contains("johnUser1"));


            //Deletes Users
            prov.DeleteUser("johnUser1", true);
            prov.DeleteUser("johnUser2", true);


            //Tries to get users again
            user1 = prov.GetUser("johnUser1", false);
            user2 = prov.GetUser("johnUser2", false);


            //test that no users are returned
            Assert.AreEqual(null, user1);
            Assert.AreEqual(null, user2);

            }

        catch (Exception ex)
        {
            LogMessage(ex);
            Assert.Fail(ex.Message);
        }
    }