单元测试场景
本文关键字:单元测试 | 更新日期: 2023-09-27 18:14:23
我有一个方法,它接受用户的ldap角色,并根据网站web.config文件中名为"ValidRoles"的列表评估他/她的每个角色。出于本测试的目的,我们将假设用户角色在不同用户之间保持不变。
现在,当我运行单元测试时,我想欺骗这个方法,让它接受一个不同的列表(而不是我的web.config中的列表(来进行比较我该怎么做我是单元测试的新手。我感谢你的建议。下面显示了我正在测试的方法、web.config中的ValidRoles以及我现有的单元测试。
private bool IsValidClaimStationRoles()
{
foreach (string role in RoleList)
{
if (role != null)
{
if (ValidRoleList.Contains(role.ToUpper()))
{
return true;
}
}
}
return false;
//web.config 中的有效角色
<add key="ValidRoles" value="C-2,CP-1,CM-1,CIS-1,CID-1"/>
//单元测试
[TestMethod()]
[DeploymentItem("ClaimsDocMgmtLinkWeb.dll")]
public void IsValidClaimStationRolesTest_Negative()
{
AuthenticateUser_Accessor target = new AuthenticateUser_Accessor(); // TODO: Initialize to an appropriate value
target.CreateTicket();
bool expected = false;
bool actual;
actual = target.IsValidClaimStationRoles();
Assert.AreEqual(expected, actual);
}
这里的单元测试场景将大部分失败,因为RoleList
将不存在。实际方法根据RoleList
集合中存在的角色列表进行验证。
你应该重构你的函数,让它接受一个RoleList
参数,然后你就可以传递假角色并测试你的方法。我在这里说的是Dependency Injection
。
private bool IsValidClaimStationRoles(RoleList roles)
{
// do processing code
}