我正在为我的控制器方法进行单元测试。
在以下方法中,我想检查返回类型是否为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而发生错误?
答案 0 :(得分:5)
在HttpGet方法中收集角色列表不是一个好习惯吗?
它没有任何问题。
我需要在控制器或测试方法中进行一些更改才能使测试通过吗?
是的,您可以将app.config文件添加到单元测试项目中,并在<system.web>
部分中注册角色管理器,就像在实际应用程序中一样。否则,您认为Roles.GetAllRoles();
方法会从哪里获取任何数据?或者,您可以将此调用包装在可以在单元测试中模拟的服务层中。
是否因为我正在使用RhinoMock而发生错误?
没有