【发布时间】:2014-07-16 07:04:16
【问题描述】:
我正在尝试将单元测试添加到新的 MVC 应用程序中,并且我正在遵循以下指南: http://msdn.microsoft.com/en-us/data/dn314429
该指南几乎准确地详细说明了我想要完成的任务 - 测试控制器的 Index() 操作中返回的结果是否正确排序,但该示例对于我的需要来说太做作了。在我的例子中,我的 ViewModel 由许多领域实体组成,我发现模拟它过于繁琐。
我的控制器动作中的查询如下:
var roles = _db.Roles
.OrderBy(r => r.Area.Application.Name)
.ThenBy(r => r.Area.Name)
.ThenBy(r => r.Name)
.Select(role =>
new RoleViewModel
{
RoleName = role.Name,
Description = role.Description,
ApplicationArea = role.Area.Application.Name + "/" + role.Area.Name,
GroupsUsingThisRole = role.RoleGroupMappings
.Select(rgm => rgm.Group.Name).ToList()
}).ToList();
从这里你可以看到我加入了许多 DBSet。我编写了很多代码来尝试模拟此查询所需的数据,主要是填充导航属性的子集合,但这需要很多时间,而且警钟开始响起,也许我做错了。
是否有更有效的方法来模拟包含大量表的复杂数据集?我花费数小时试图模拟数据来测试需要几秒钟才能编写的代码,这感觉不对。
【问题讨论】:
标签: c# asp.net-mvc unit-testing moq