几天前我有一个问题,询问“计算我的测试在 MembershipUserCollection 中找到的以“john”开头的用户名数量的最简单方法是什么?(测试应该找到 2 个用户名,johnUser1 和 johnUser2)
我收到以下来自 Garrison Neely 的评论
“两点:1)FindUsersByName是.NET框架中的一个方法。我认为没有必要对非自定义方法的功能进行单元测试2)如果你真的必须测试这个方法,添加像你这样的用户正在做,调用 GetAllUsers,然后循环或使用 LINQ 搜索所有 .StartsWith("john") 的用户名。
如何调用 GetAllUsers,然后使用 LINQ 搜索所有 .StartsWith("john") 的用户名?
[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);
}
}