Lambda 表达式的代码覆盖率

2024-01-03

我在整个代码中看到一种模式,其中 lambda 表达式显示为未包含在代码覆盖范围内,调试器确实单步执行代码并且没有条件块。

public CollectionModel()
{
    List<Language> languages = LanguageService.GetLanguages();
    this.LanguageListItems =
        languages.Select(
            s =>
            new SelectListItem { Text = s.Name, Value = s.LanguageCode, Selected = false }). // <-- this shows as not covered
            AsEnumerable();
}

这有点奇怪。有任何想法吗?


我认为你的意思是调试器没有跨过指定的行;是对的吗?

如果这是您的问题,那么答案是,至少在这种特殊情况下,您所看到的是延迟执行。提供的所有 LINQ 扩展方法System.Linq.Enumerable http://msdn.microsoft.com/en-us/library/system.linq.enumerable.aspx表现出这种行为:即 lambda 语句本身内部的代码是not在您定义它的行上执行。仅在枚举结果对象后才会执行该代码。

将其添加到您发布的代码下方:

foreach (var x in this.LanguageListItems)
{
    var local = x;
}

在这里,您将看到调试器跳回您的 lambda。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lambda 表达式的代码覆盖率 的相关文章

随机推荐