控制器单元测试期间未启用角色管理器功能错误

时间:2013-08-15 11:45:28

标签: c# asp.net-mvc unit-testing asp.net-mvc-4 roleprovider

我正在为我的控制器方法进行单元测试。 在以下方法中,我想检查返回类型是否为ViewResult

    [HttpGet]
    public ActionResult AddRepresentative(Guid businessUnitId)
    {
        var roles = Roles.GetAllRoles();
        var model = new AddRepresentativeModel
        {
            BusinessUnitId = businessUnitId,
            Roles = roles.Select(r => new SelectListItem
            {
                Value = r,
                Text = r,
            })
        };
        return View(model);
    }

这就是我为测试而做的事情

   [TestMethod]
    public void AddRepresentative_Get_Action_RendersView()
    {
        var result = _controller.AddRepresentative(Guid.Empty);

        Assert.IsInstanceOfType(result,typeof(ViewResult));
    }

错误

  

测试方法   AdminPortal.Tests.Controller_Test.Customer.BusinessUnitControllerTests.AddRepresentative_Get_Action_RendersView   抛出异常:System.Configuration.Provider.ProviderException:The   尚未启用角色管理器功能。

问题: 在HttpGet方法中收集角色列表不是一个好习惯吗?

我需要在控制器或测试方法中进行一些更改才能使测试通过吗?

是否因为我正在使用RhinoMock而发生错误?

1 个答案:

答案 0 :(得分:5)

  

在HttpGet方法中收集角色列表不是一个好习惯吗?

它没有任何问题。

  

我需要在控制器或测试方法中进行一些更改才能使测试通过吗?

是的,您可以将app.config文件添加到单元测试项目中,并在<system.web>部分中注册角色管理器,就像在实际应用程序中一样。否则,您认为Roles.GetAllRoles();方法会从哪里获取任何数据?或者,您可以将此调用包装在可以在单元测试中模拟的服务层中。

  

是否因为我正在使用RhinoMock而发生错误?

没有