gpt4 book ai didi

c# - Controller 单元测试期间未启用角色管理器功能错误

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:46 26 4
gpt4 key购买 nike

我正在对 Controller 的方法进行单元测试。在下面的方法中,我想检查返回类型是否为 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));
}

错误:

Test method AdminPortal.Tests.Controller_Test.Customer.BusinessUnitControllerTests.AddRepresentative_Get_Action_RendersView threw exception: System.Configuration.Provider.ProviderException: The Role Manager feature has not been enabled.

问题:在 HttpGet 方法中收集角色列表不是很好的做法吗?

为了使测试通过,我需要在我的 Controller 或测试方法中进行一些更改吗?

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

最佳答案

Is it not good practice to collect list of roles in HttpGet method?

没有什么问题。

Is there some change that i need to make in my controller or test method in order make the test pass?

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

Is the error occurring because I'm using RhinoMock?

没有。

关于c# - Controller 单元测试期间未启用角色管理器功能错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18252013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com