单元测试场景

时间:2015-09-24 20:55:07

标签: c# visual-studio unit-testing

我有一个方法,它接受用户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);

    }

1 个答案:

答案 0 :(得分:1)

此处的单元测试场景将大部分失败,因为RoleList不会出现。实际方法根据RoleList集合中存在的角色列表进行验证。

您应该重构您的函数并让它接受RoleList参数,然后您可以传递假角色并测试您的方法。我在这里谈论的是Dependency Injection

   private bool IsValidClaimStationRoles(RoleList roles)
    {
      // do processing code
    }
相关问题