我有一个代码优先的 EF 实现,我有一个服务层函数GetNavigations()
来创建IEnumerable<Navigation>
.
GetNavigations()
当我运行我的代码并在我的 MVC 视图中点击断点时,我注意到当我尝试访问对象属性时,我的调试指针回到了内部。为什么这样做?它真的一遍又一遍地运行我的功能吗?
我也想知道为什么我的测试不会进入我的函数调用,除非我执行result.Count()
.
看法
<ul>
@foreach (var menu1 in Model)
{
<li><a href="@menu1.Url" >@menu1.Text</a>
@if (menu1.SubNavigations.Count > 0)
{
<div>
<ul>
@foreach (var menu2 in menu1.SubNavigations)
{
<li>
<a href="@menu2.Url" >@menu2.Text</a>
</li>
}
</ul>
</div>
}
</li>
}
</ul>
测试方法
INavigationManager oNavMgr = CreateTarget();
// does not step into
var result = oNavMgr.GetNavigations(NavigationType.Main, false);
// but it steps into when i do this.
Assert.IsTrue(result.Count() > 0);
控制器
public class NavigationController : Controller
{
IUnitOfWork m_oUnitOfWork = null;
public NavigationController(IUnitOfWork oUoW)
{
m_oUnitOfWork = oUoW;
}
//
// GET: /Navigation/
public PartialViewResult List(NavigationType iId)
{
var topNavs = m_oUnitOfWork.NavigationManager.GetNavigations(iId);
return PartialView(topNavs);
}
}